[object Object]

← back to Designer Wallcoverings

Bucket B Graham & Brown: PG roll-price recovery (387 priced) + 14 Needs-Price, rolls staged (budget-safe)

2f6e75b3c4ab02989dff266722c2cfef2f9035ca · 2026-06-22 15:06:01 -0700 · Steve

- bucketB-grahambrown-enrich.sh: feed-first PG join worklist->graham_brown_catalog on dw_sku
  (exact + suffix-strip), price priority dw_retail_price->retail_price->cost/0.65/0.85, sub-$20
  bespoke-mural artifacts rejected to Needs-Price (never force-price).
- bucketB-grahambrown-roll-variants.js: clone of harlequin variant, shared roll budget,
  PG-first retail_price write (387 rows), draft-gated, idempotent/resumable. Rolls staged
  this window (shared 1k cap full); --apply re-run lands them when the cap resets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Files touched

Diff

commit 2f6e75b3c4ab02989dff266722c2cfef2f9035ca
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon Jun 22 15:06:01 2026 -0700

    Bucket B Graham & Brown: PG roll-price recovery (387 priced) + 14 Needs-Price, rolls staged (budget-safe)
    
    - bucketB-grahambrown-enrich.sh: feed-first PG join worklist->graham_brown_catalog on dw_sku
      (exact + suffix-strip), price priority dw_retail_price->retail_price->cost/0.65/0.85, sub-$20
      bespoke-mural artifacts rejected to Needs-Price (never force-price).
    - bucketB-grahambrown-roll-variants.js: clone of harlequin variant, shared roll budget,
      PG-first retail_price write (387 rows), draft-gated, idempotent/resumable. Rolls staged
      this window (shared 1k cap full); --apply re-run lands them when the cap resets.
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---
 shopify/scripts/bucketB-grahambrown-enrich.sh      |   94 +
 .../scripts/bucketB-grahambrown-roll-variants.js   |  318 +++
 shopify/scripts/data/bucketB/gb-run-report.json    | 2590 ++++++++++++++++++++
 3 files changed, 3002 insertions(+)

diff --git a/shopify/scripts/bucketB-grahambrown-enrich.sh b/shopify/scripts/bucketB-grahambrown-enrich.sh
new file mode 100755
index 00000000..12dbd584
--- /dev/null
+++ b/shopify/scripts/bucketB-grahambrown-enrich.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/env bash
+# bucketB-grahambrown-enrich.sh  (2026-06-22)  — owner: vp-dw-commerce
+#
+# Produce data/bucketB-grahambrown-enriched.tsv by joining the 401-row worklist
+# (shopify_id base_sku handle sample_sku) to graham_brown_catalog (dw_unified) on
+# dw_sku (exact), then suffix-strip fallback. Feed-first PG join — never invents a
+# price. PRICE PRIORITY (NOT Kravet-family): dw_retail_price -> retail_price ->
+# (cost_price|master_cost|cost|trade_price)/0.65/0.85. A "usable direct retail"
+# below $20 is a per-sqm/bespoke-mural artifact, NOT a sellable single-roll price,
+# so it is REJECTED here (treated as no-price -> Needs-Price). NEVER force-price.
+#
+# Enriched TSV cols (tab-separated, matches the harlequin enriched schema):
+#   shopify_id  base_sku  sample_sku  mfr_sku  price_retail  price_trade  price_source  cat_width  cat_width_in  cat_image  cat_disc
+#   - price_retail : resolved DW retail per single roll (>=20) when known, else empty
+#   - price_trade  : a cost/trade basis to derive from (when no direct retail) else empty
+#   - price_source : catalog_retail | catalog_trade_derived | none
+set -euo pipefail
+WL="$HOME/Projects/designerwallcoverings/today-viewer/data/bucketB-grahambrown-worklist.tsv"
+OUT="$HOME/Projects/designerwallcoverings/today-viewer/data/bucketB-grahambrown-enriched.tsv"
+REMOTE_WL="/tmp/bucketB-grahambrown-worklist.tsv"
+REMOTE_OUT="/tmp/bucketB-grahambrown-enriched.tsv"
+
+# ship the worklist (header stripped) to Kamatera for the \copy
+tail -n +2 "$WL" > /tmp/_gb_wl_noheader.tsv
+scp -q /tmp/_gb_wl_noheader.tsv "my-server:$REMOTE_WL"
+
+ssh my-server "sudo -u postgres psql -d dw_unified -v ON_ERROR_STOP=1" << SQL
+CREATE TEMP TABLE wl(shopify_id text, base_sku text, handle text, sample_sku text);
+\copy wl FROM '$REMOTE_WL' WITH (FORMAT csv, DELIMITER E'\t')
+
+-- resolve one row per worklist sku (dedup duplicate catalog rows by MAX, exact dw_sku join;
+-- suffix-strip fallback only when exact misses). Direct retail < 20 => discarded as not-a-roll.
+CREATE TEMP TABLE enr AS
+WITH exact AS (
+  SELECT wl.shopify_id, wl.base_sku, wl.sample_sku,
+    MAX(g.mfr_sku)                                                   AS mfr_sku,
+    MAX(COALESCE(NULLIF(g.dw_retail_price,0), NULLIF(g.retail_price,0)))      AS direct_retail,
+    MAX(COALESCE(NULLIF(g.cost_price,0), NULLIF(g.master_cost,0), NULLIF(g.trade_price,0))) AS cost_basis,
+    MAX(g.width)                                                     AS cat_width,
+    bool_or(g.image_url IS NOT NULL AND g.image_url <> '')           AS has_img,
+    bool_or(COALESCE(lower(g.pattern_type),'') LIKE '%discontinu%')  AS disc
+  FROM wl JOIN graham_brown_catalog g ON g.dw_sku = wl.base_sku
+  GROUP BY wl.shopify_id, wl.base_sku, wl.sample_sku
+),
+ss AS (  -- suffix-strip fallback for worklist skus that had NO exact match
+  SELECT wl.shopify_id, wl.base_sku, wl.sample_sku,
+    MAX(g.mfr_sku) AS mfr_sku,
+    MAX(COALESCE(NULLIF(g.dw_retail_price,0), NULLIF(g.retail_price,0))) AS direct_retail,
+    MAX(COALESCE(NULLIF(g.cost_price,0), NULLIF(g.master_cost,0), NULLIF(g.trade_price,0))) AS cost_basis,
+    MAX(g.width) AS cat_width,
+    bool_or(g.image_url IS NOT NULL AND g.image_url <> '') AS has_img,
+    bool_or(COALESCE(lower(g.pattern_type),'') LIKE '%discontinu%') AS disc
+  FROM wl
+  JOIN graham_brown_catalog g
+    ON regexp_replace(g.dw_sku, '-[0-9]+\$', '') = regexp_replace(wl.base_sku, '-[0-9]+\$', '')
+  WHERE wl.base_sku NOT IN (SELECT base_sku FROM exact)
+  GROUP BY wl.shopify_id, wl.base_sku, wl.sample_sku
+)
+SELECT DISTINCT ON (wl.shopify_id)
+  wl.shopify_id, wl.base_sku, wl.sample_sku,
+  COALESCE(e.mfr_sku, s.mfr_sku)                       AS mfr_sku,
+  COALESCE(e.direct_retail, s.direct_retail)           AS direct_retail,
+  COALESCE(e.cost_basis, s.cost_basis)                 AS cost_basis,
+  COALESCE(e.cat_width, s.cat_width)                   AS cat_width,
+  COALESCE(e.has_img, s.has_img, false)                AS has_img,
+  COALESCE(e.disc, s.disc, false)                      AS disc
+FROM wl
+LEFT JOIN exact e ON e.base_sku = wl.base_sku
+LEFT JOIN ss    s ON s.base_sku = wl.base_sku
+-- one row per worklist product; prefer the exact-match price (highest), break ties deterministically
+ORDER BY wl.shopify_id, COALESCE(e.direct_retail, s.direct_retail) DESC NULLS LAST, wl.base_sku;
+
+-- emit the enriched TSV. direct retail >=20 => catalog_retail. else if cost basis present =>
+-- catalog_trade_derived (handled by the JS using price_trade). else none (Needs-Price).
+\copy (SELECT shopify_id, base_sku, sample_sku, COALESCE(mfr_sku,''), \
+  CASE WHEN direct_retail >= 20 THEN direct_retail::text ELSE '' END, \
+  CASE WHEN (direct_retail IS NULL OR direct_retail < 20) AND cost_basis > 0 THEN cost_basis::text ELSE '' END, \
+  CASE WHEN direct_retail >= 20 THEN 'catalog_retail' \
+       WHEN (direct_retail IS NULL OR direct_retail < 20) AND cost_basis > 0 THEN 'catalog_trade_derived' \
+       ELSE 'none' END, \
+  COALESCE(cat_width,''), '', \
+  CASE WHEN has_img THEN 't' ELSE '' END, \
+  CASE WHEN disc THEN 't' ELSE '' END \
+  FROM enr ORDER BY base_sku) TO '$REMOTE_OUT' WITH (FORMAT text, DELIMITER E'\t', NULL '')
+
+SELECT 'enriched rows' lbl, count(*)::text FROM enr
+UNION ALL SELECT 'catalog_retail (>=20)', count(*)::text FROM enr WHERE direct_retail >= 20
+UNION ALL SELECT 'trade_derived', count(*)::text FROM enr WHERE (direct_retail IS NULL OR direct_retail<20) AND cost_basis>0
+UNION ALL SELECT 'none (Needs-Price)', count(*)::text FROM enr WHERE COALESCE(direct_retail,0)<20 AND COALESCE(cost_basis,0)=0;
+SQL
+
+scp -q "my-server:$REMOTE_OUT" "$OUT"
+echo "enriched -> $OUT"
+wc -l "$OUT"
diff --git a/shopify/scripts/bucketB-grahambrown-roll-variants.js b/shopify/scripts/bucketB-grahambrown-roll-variants.js
new file mode 100644
index 00000000..0d1777b9
--- /dev/null
+++ b/shopify/scripts/bucketB-grahambrown-roll-variants.js
@@ -0,0 +1,318 @@
+#!/usr/bin/env node
+/**
+ * bucketB-grahambrown-roll-variants.js  (2026-06-22)  — owner: vp-dw-commerce
+ *
+ * Bucket B — Graham & Brown sample-only recovery (Steve APPROVED, feed-first, draft-gated,
+ * reversible). Clone of bucketB-harlequin-roll-variants.js pointed at graham_brown_catalog.
+ * For the 401 Graham & Brown sample-only products (Sample variant present, no sellable ROLL),
+ * add the missing ROLL variant `{DW_SKU}` alongside the existing `{DW_SKU}-Sample` ($4.25).
+ *
+ * PRICE SOURCE — recover from PG first (feed-first), scrape only gaps:
+ *   graham_brown_catalog (dw_unified) is RICH: dw_retail_price, retail_price, cost_price,
+ *   master_cost, trade_price, mfr_sku, dw_sku. The worklist base_sku is already in DWGB-
+ *   form, so we join directly on graham_brown_catalog.dw_sku (exact, then suffix-strip
+ *   fallback). The enriched TSV is produced upstream by that PG join into
+ *   data/bucketB-grahambrown-enriched.tsv (bucketB-grahambrown-enrich.sh); this script
+ *   never invents a price.
+ *
+ *   387/401 recover a real sellable per-roll price this way (catalog_retail). The other 14
+ *   either have no catalog match (DWWC-/DWGB- codes outside the GB catalog cohort) or
+ *   resolve only to a sub-$20 "Bespoke Mural/Panoramic" per-sqm artifact that is NOT a
+ *   sellable single-roll price ($9 murals) — both are GATED to Needs-Price. We NEVER
+ *   force-price and we do NOT push a $9 per-sqm value as a roll. Catalog-missing rows can
+ *   be re-scraped later (gb-pricing.js) without touching this run.
+ *
+ * PRICING RULE (Graham & Brown is NOT Kravet-family):
+ *   prefer the direct DW retail (dw_retail_price -> retail_price, per single roll) -> verbatim
+ *   (carried in the enriched TSV as price_retail).
+ *   else if only a cost/trade basis -> DW retail = basis/0.65/0.85 (enriched price_trade).
+ *   (No row in this cohort is cost-only, but the branch is kept for correctness.)
+ *
+ * ORDER OF OPS (PostgreSQL BEFORE Shopify):
+ *   1. read recovered roll price from data/bucketB-grahambrown-enriched.tsv (PG-sourced)
+ *   2. WRITE the roll price into dw_unified.shopify_products.retail_price for the matching
+ *      shopify_id (GID) -- source of truth first
+ *   3. create the ROLL variant on the Shopify product (sku on inventoryItem), reorder
+ *      roll-first, set metafields (mfr_sku, unit_of_measure, price_updated_at)
+ *   4. for unmatched (price_source=none): tag Needs-Price (+ Needs-Width/Needs-Image where
+ *      the catalog gave us no width/image) — NO variant, status untouched
+ *
+ * SHARED VARIANT BUDGET (budget.cjs, 1k/day, shared with Coordonné + Mind the Gap + Harlequin):
+ *   take('roll', N) before creating, refund the unused grant after — fail-closed refund so a
+ *   429/exit/partial never silently drains the daily slice. If the combined day would exceed
+ *   the cap (grant < want), the remainder is STAGED (deferred to the next window) and noted in
+ *   the report — never forced past the ceiling.
+ *
+ * HARD RULES enforced:
+ *   - NEVER DUPLICATE — operate on the EXISTING product by shopify_id; idempotent skip if a
+ *     non-Sample variant already exists. Never create a 2nd product.
+ *   - PRICE GATE — no recovered price => row stays sample-only, tag Needs-Price.
+ *   - PG dw_unified BEFORE Shopify.
+ *   - NEVER flip status. These are ACTIVE; we never set ACTIVE (no img+width work here) and
+ *     never demote. A DRAFT product would stay DRAFT.
+ *   - never touch title / customer-facing vendor field / display_variant tag.
+ *   - never the word "Wallpaper"; SKU never "Unknown" (sample sku is authoritative).
+ *
+ * Resumable: idempotent per product (skips already-has-roll; re-tagging is additive).
+ *
+ *   node bucketB-grahambrown-roll-variants.js                          # DRY-RUN
+ *   node bucketB-grahambrown-roll-variants.js --apply                  # LIVE (budget-safe)
+ *   DW_ROLL_CAP=400 node bucketB-grahambrown-roll-variants.js --apply   # allow up to 400 roll grants today
+ *   node bucketB-grahambrown-roll-variants.js --apply --report data/bucketB/gb-run-report.json
+ *
+ * NOTE: the shared budget defaults roll cap to 0 (upload/backlog priority), so a plain
+ *   --apply will grant 0 and STAGE all priced rolls until a roll slice is freed. To land
+ *   this finite, Steve-approved cohort set DW_ROLL_CAP (still clamped to the global 1k
+ *   ceiling — it can never push the combined daily total past the cap, only reorder priority).
+ */
+const https = require('https');
+const fs = require('fs');
+const os = require('os');
+const path = require('path');
+const { execFileSync } = require('child_process');
+
+const args = process.argv.slice(2);
+const APPLY = args.includes('--apply');
+const numArg = (flag, dflt) => { const i = args.indexOf(flag); return i >= 0 ? parseInt(args[i + 1], 10) : dflt; };
+const strArg = (flag, dflt) => { const i = args.indexOf(flag); return i >= 0 ? args[i + 1] : dflt; };
+const MAX_CREATE = numArg('--max-create', 900);
+const BATCH_SIZE = numArg('--batch-size', 100);
+const BATCH_GAP_MS = numArg('--batch-gap', 90000);
+const REPORT = strArg('--report', null);
+
+const TSV = path.join(os.homedir(), 'Projects/designerwallcoverings/today-viewer/data/bucketB-grahambrown-enriched.tsv');
+const TODAY = new Date().toISOString().slice(0, 10);
+
+// shared daily Shopify variant budget (roll category — same as the other Bucket B vendors)
+const budget = require(path.join(os.homedir(), 'Projects/designerwallcoverings/scripts/variant-budget/budget.cjs'));
+const BUDGET_WHO = 'roll';
+
+const env = fs.readFileSync(path.join(os.homedir(), 'Projects/secrets-manager/.env'), 'utf8');
+const TOKEN = (env.match(/^SHOPIFY_ADMIN_TOKEN=(.*)$/m) || [])[1].replace(/['"]/g, '').trim();
+const STORE = 'designer-laboratory-sandbox.myshopify.com', API = '2024-10';
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+function round2(n) { return Math.round((n + Number.EPSILON) * 100) / 100; }
+
+// ---- dw_unified write (PG-first) ------------------------------------------
+// worklist shopify_id is the NUMERIC product id; shopify_products keys on the GID form.
+function pgWriteRollPrice(rows) {
+  if (!rows.length) return '0';
+  const values = rows.map(r =>
+    `('gid://shopify/Product/${r.shopify_id}', ${r.price})`).join(',\n');
+  const sql = `
+BEGIN;
+CREATE TEMP TABLE _bBgb_price(gid text, roll_price numeric);
+INSERT INTO _bBgb_price(gid, roll_price) VALUES
+${values};
+UPDATE shopify_products sp
+   SET retail_price = b.roll_price
+  FROM _bBgb_price b
+ WHERE sp.shopify_id = b.gid;
+SELECT count(*) AS updated FROM _bBgb_price b JOIN shopify_products sp ON sp.shopify_id=b.gid;
+COMMIT;`;
+  const out = execFileSync('ssh', ['my-server',
+    `sudo -u postgres psql -d dw_unified -v ON_ERROR_STOP=1 -t -A`],
+    { input: sql, encoding: 'utf8', maxBuffer: 1 << 24 });
+  return out.trim();
+}
+
+// ---- Shopify GraphQL -------------------------------------------------------
+function gql(query, variables = {}) {
+  return new Promise((resolve, reject) => {
+    const body = JSON.stringify({ query, variables });
+    const req = https.request({ host: STORE, path: `/admin/api/${API}/graphql.json`, method: 'POST',
+      headers: { 'Content-Type': 'application/json', 'X-Shopify-Access-Token': TOKEN, 'Content-Length': Buffer.byteLength(body) } },
+      r => { let d = ''; r.on('data', c => d += c); r.on('end', () => { try { resolve(JSON.parse(d)); } catch (e) { reject(d); } }); });
+    req.on('error', reject); req.write(body); req.end();
+  });
+}
+async function gqlR(q, v, tries = 4) {
+  for (let i = 0; i < tries; i++) {
+    const r = await gql(q, v);
+    if (r && !r.errors) return r;
+    const throttled = (r.errors || []).some(e => /throttl/i.test(JSON.stringify(e)));
+    if (!throttled) return r;
+    await sleep(1500 * (i + 1));
+  }
+  return gql(q, v);
+}
+
+const Q_PRODUCT = `query($id:ID!){product(id:$id){id title status tags
+  options{name values}
+  variants(first:30){nodes{id title sku selectedOptions{name value} inventoryItem{id}}}}}`;
+const M_VAR_CREATE = `mutation($pid:ID!,$variants:[ProductVariantsBulkInput!]!){
+  productVariantsBulkCreate(productId:$pid,variants:$variants){
+    productVariants{id sku} userErrors{field message}}}`;
+const M_REORDER = `mutation($pid:ID!,$positions:[ProductVariantPositionInput!]!){
+  productVariantsBulkReorder(productId:$pid,positions:$positions){userErrors{field message}}}`;
+const M_MF = `mutation($mf:[MetafieldsSetInput!]!){metafieldsSet(metafields:$mf){userErrors{field message}}}`;
+const M_TAGS = `mutation($id:ID!,$tags:[String!]!){tagsAdd(id:$id,tags:$tags){userErrors{field message}}}`;
+
+// ---- worklist (enriched) ---------------------------------------------------
+// cols: shopify_id base_sku sample_sku mfr_sku price_retail price_trade price_source cat_width cat_width_in cat_image cat_disc
+function loadWork() {
+  const lines = fs.readFileSync(TSV, 'utf8').replace(/\n$/, '').split('\n');
+  return lines.map(l => {
+    const c = l.split('\t');
+    return {
+      shopify_id: (c[0] || '').trim(), base_sku: (c[1] || '').trim(),
+      sample_sku: (c[2] || '').trim(), mfr_sku: (c[3] || '').trim(),
+      price_retail: c[4] ? parseFloat(c[4]) : null,
+      price_trade: c[5] ? parseFloat(c[5]) : null,
+      price_source: (c[6] || '').trim(),
+      cat_width: (c[7] || '').trim(), cat_width_in: (c[8] || '').trim(),
+      cat_image: (c[9] || '').trim(), cat_disc: (c[10] || '').trim() === 't',
+    };
+  }).filter(r => r.shopify_id && /^\d+$/.test(r.shopify_id));
+}
+
+// Graham & Brown price rule (NOT Kravet-family): prefer retail verbatim; else trade/0.65/0.85.
+function rollPriceFor(r) {
+  if (r.price_retail != null && r.price_retail > 0) return { price: round2(r.price_retail), src: 'catalog_retail' };
+  if (r.price_trade != null && r.price_trade > 0) return { price: round2(r.price_trade / 0.65 / 0.85), src: 'catalog_trade_derived' };
+  return null;
+}
+
+(async () => {
+  const rows = loadWork();
+  const priced = []; const unpriced = [];
+  for (const r of rows) {
+    const p = rollPriceFor(r);
+    if (p) { r.roll_price = p.price; r.price_basis = p.src; priced.push(r); }
+    else unpriced.push(r);
+  }
+  console.log(`bucketB-grahambrown — ${rows.length} products (${priced.length} priced, ${unpriced.length} no-price) — ${APPLY ? '🔴 LIVE' : 'DRY-RUN'}`);
+  console.log(`max-create=${MAX_CREATE} batch-size=${BATCH_SIZE} batch-gap=${BATCH_GAP_MS}ms`);
+
+  // shared budget snapshot
+  let budgetGrant = 0, budgetWant = 0;
+  if (priced.length) {
+    budgetWant = Math.min(priced.length, MAX_CREATE);
+    if (APPLY) {
+      budgetGrant = budget.take(BUDGET_WHO, budgetWant);
+      console.log(`budget.take('${BUDGET_WHO}', ${budgetWant}) -> granted ${budgetGrant}`);
+      if (budgetGrant < budgetWant) {
+        console.log(`⚠ shared 1k/day cap leaves only ${budgetGrant} roll slots; ${budgetWant - budgetGrant} priced rows STAGED for the next window`);
+      }
+    } else {
+      budgetGrant = Math.min(budget.remaining(BUDGET_WHO), budgetWant);
+      console.log(`(dry-run) budget.remaining('${BUDGET_WHO}')=${budget.remaining(BUDGET_WHO)} -> would create up to ${budgetGrant} this window`);
+    }
+  }
+  console.log('');
+
+  const report = { started: new Date().toISOString(), apply: APPLY, vendor: 'Graham & Brown', scrapedFresh: 0,
+    created: [], skippedAlreadyRoll: [], taggedNeedsPrice: [], staged: [], failed: [],
+    byPriceSource: {}, budget: { who: BUDGET_WHO, want: budgetWant, granted: budgetGrant, refunded: 0 }, geminiCostUsd: 0 };
+
+  // rows we may actually create this run (bounded by budget grant)
+  const toCreate = priced.slice(0, budgetGrant);
+  const stagedPriced = priced.slice(budgetGrant);
+  for (const s of stagedPriced) report.staged.push({ shopify_id: s.shopify_id, base_sku: s.base_sku, roll_price: s.roll_price, reason: 'budget-cap' });
+
+  // ---- PG-FIRST: write recovered roll prices to dw_unified before any Shopify write ----
+  // Write for ALL priced rows (source of truth), even staged ones — the price is known; only
+  // the Shopify variant is deferred. (Idempotent UPDATE; re-running is harmless.)
+  if (APPLY && priced.length) {
+    try {
+      const res = pgWriteRollPrice(priced.map(w => ({ shopify_id: w.shopify_id, price: round2(w.roll_price) })));
+      console.log(`PG (dw_unified) retail_price written — psql updated count: ${res}\n`);
+      report.pgUpdated = res;
+    } catch (e) {
+      console.error('PG write FAILED — refunding budget + aborting before Shopify:', e.message || e);
+      if (budgetGrant > 0) budget.refund(BUDGET_WHO, budgetGrant);
+      process.exit(2);
+    }
+  } else if (priced.length) {
+    console.log(`(dry-run) would write ${priced.length} retail_price rows to dw_unified first\n`);
+  }
+
+  // ---- Shopify: add ROLL variant to each (budget-permitted) priced product ----
+  let createdThisRun = 0, inBatch = 0;
+  for (const w of toCreate) {
+    const pid = `gid://shopify/Product/${w.shopify_id}`;
+    const pr = await gqlR(Q_PRODUCT, { id: pid });
+    const p = pr.data && pr.data.product;
+    if (!p) { console.log(`❌ ${w.shopify_id} ${w.base_sku} not found`); report.failed.push({ ...w, reason: 'not-found' }); continue; }
+
+    const vs = p.variants.nodes;
+    const sample = vs.find(v => /sample/i.test(v.title) || /-sample$/i.test(v.sku || ''));
+    const roll = vs.find(v => v !== sample);
+    if (roll) { console.log(`⏭  ${p.title.slice(0,46)} already has roll (${roll.sku})`); report.skippedAlreadyRoll.push({ ...w, existingRollSku: roll.sku }); continue; }
+
+    // SKU: prefer existing sample sku minus -Sample (authoritative), else base_sku. Never Unknown.
+    let skuBase = (sample && sample.sku) ? sample.sku.replace(/-sample$/i, '') : w.base_sku;
+    if (!skuBase) { console.log(`❌ ${w.shopify_id} — no derivable SKU — SKIP`); report.failed.push({ ...w, reason: 'no-sku' }); continue; }
+    const price = round2(w.roll_price);
+
+    console.log(`${APPLY ? '➕' : '·'} ${p.title.slice(0,44).padEnd(44)} [${p.status}] roll $${price} (${w.price_basis}) sku ${skuBase}`);
+    report.byPriceSource[w.price_basis] = (report.byPriceSource[w.price_basis] || 0) + 1;
+    if (!APPLY) { report.created.push({ ...w, skuBase, price, dryRun: true }); continue; }
+
+    const cr = await gqlR(M_VAR_CREATE, { pid, variants: [{
+      optionValues: [{ optionName: (p.options[0] && p.options[0].name) || 'Title', name: 'Single Roll' }],
+      price: String(price), taxable: true, inventoryPolicy: 'CONTINUE',
+      inventoryItem: { sku: skuBase, tracked: false },
+    }] });
+    const ue = cr.data?.productVariantsBulkCreate?.userErrors || [];
+    if (ue.length) { console.log(`   ❌ create: ${JSON.stringify(ue)}`); report.failed.push({ ...w, skuBase, reason: 'create-error', errors: ue }); continue; }
+    const newId = cr.data.productVariantsBulkCreate.productVariants[0].id;
+
+    if (sample) {
+      const ro = await gqlR(M_REORDER, { pid, positions: [{ id: newId, position: 1 }, { id: sample.id, position: 2 }] });
+      const re = ro.data?.productVariantsBulkReorder?.userErrors || [];
+      if (re.length) console.log(`   ⚠ reorder: ${JSON.stringify(re)}`);
+    }
+
+    const mf = await gqlR(M_MF, { mf: [
+      { ownerId: pid, namespace: 'custom', key: 'manufacturer_sku', type: 'single_line_text_field', value: w.mfr_sku || skuBase },
+      { ownerId: pid, namespace: 'dwc', key: 'manufacturer_sku', type: 'single_line_text_field', value: w.mfr_sku || skuBase },
+      { ownerId: pid, namespace: 'custom', key: 'price_updated_at', type: 'date', value: TODAY },
+      { ownerId: pid, namespace: 'global', key: 'unit_of_measure', type: 'single_line_text_field', value: 'Priced Per Single Roll' },
+    ] });
+    const me = mf.data?.metafieldsSet?.userErrors || [];
+    if (me.length) console.log(`   ⚠ metafields: ${JSON.stringify(me)}`);
+
+    report.created.push({ ...w, skuBase, price, variantId: newId });
+    createdThisRun++; inBatch++;
+    if (inBatch >= BATCH_SIZE) { console.log(`   …batch of ${inBatch} done — sleeping ${BATCH_GAP_MS/1000}s (≥90s bulk gap)`); await sleep(BATCH_GAP_MS); inBatch = 0; }
+    else await sleep(200);
+  }
+
+  // ---- refund unused budget grant (fail-closed) — granted but not consumed by a real create ----
+  if (APPLY && budgetGrant > 0) {
+    const unused = budgetGrant - createdThisRun;
+    if (unused > 0) { const back = budget.refund(BUDGET_WHO, unused); report.budget.refunded = back; console.log(`\nbudget.refund('${BUDGET_WHO}', ${unused}) -> returned ${back} (created ${createdThisRun}/${budgetGrant})`); }
+  }
+
+  // ---- unpriced: tag Needs-Price (+ Needs-Width/Needs-Image where catalog lacked them) ----
+  console.log(`\n--- tagging ${unpriced.length} unpriced rows (Needs-Price) ---`);
+  for (const w of unpriced) {
+    const tags = ['Needs-Price'];
+    if (!w.cat_width) tags.push('Needs-Width');
+    if (!w.cat_image) tags.push('Needs-Image');
+    if (!APPLY) { report.taggedNeedsPrice.push({ ...w, tags, dryRun: true }); continue; }
+    const pid = `gid://shopify/Product/${w.shopify_id}`;
+    const tr = await gqlR(M_TAGS, { id: pid, tags });
+    const te = tr.data?.tagsAdd?.userErrors || [];
+    if (te.length) { console.log(`   ⚠ tag ${w.base_sku}: ${JSON.stringify(te)}`); report.failed.push({ ...w, reason: 'tag-error', errors: te }); continue; }
+    report.taggedNeedsPrice.push({ ...w, tags });
+    await sleep(80);
+  }
+
+  report.finished = new Date().toISOString();
+  report.totals = {
+    rollVariantsCreated: report.created.filter(c => !c.dryRun).length,
+    rollVariantsWouldCreate: report.created.filter(c => c.dryRun).length,
+    stayedSampleOnly_NeedsPrice: report.taggedNeedsPrice.length,
+    stagedForNextWindow: report.staged.length,
+    skippedAlreadyHadRoll: report.skippedAlreadyRoll.length,
+    scrapedFresh: report.scrapedFresh,
+    failed: report.failed.length,
+  };
+  console.log(`\n=== SUMMARY ===`);
+  console.log(JSON.stringify(report.totals, null, 2));
+  console.log('byPriceSource:', JSON.stringify(report.byPriceSource));
+  console.log('budget:', JSON.stringify(report.budget));
+  if (REPORT) { fs.mkdirSync(path.dirname(REPORT), { recursive: true }); fs.writeFileSync(REPORT, JSON.stringify(report, null, 2)); console.log(`report -> ${REPORT}`); }
+})();
diff --git a/shopify/scripts/data/bucketB/gb-run-report.json b/shopify/scripts/data/bucketB/gb-run-report.json
new file mode 100644
index 00000000..1ec2c7a3
--- /dev/null
+++ b/shopify/scripts/data/bucketB/gb-run-report.json
@@ -0,0 +1,2590 @@
+{
+  "started": "2026-06-22T22:04:52.071Z",
+  "apply": true,
+  "vendor": "Graham & Brown",
+  "scrapedFresh": 0,
+  "created": [],
+  "skippedAlreadyRoll": [],
+  "taggedNeedsPrice": [
+    {
+      "shopify_id": "7779661905971",
+      "base_sku": "DWGB-800145",
+      "sample_sku": "DWGB-800145-Sample",
+      "mfr_sku": "128616",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7779662626867",
+      "base_sku": "DWGB-800154",
+      "sample_sku": "DWGB-800154-Sample",
+      "mfr_sku": "140415",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7779663773747",
+      "base_sku": "DWGB-800158",
+      "sample_sku": "DWGB-800158-Sample",
+      "mfr_sku": "142460",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7779663872051",
+      "base_sku": "DWGB-800159",
+      "sample_sku": "DWGB-800159-Sample",
+      "mfr_sku": "142921",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7780858626099",
+      "base_sku": "DWGB-800184",
+      "sample_sku": "DWGB-800184-Sample",
+      "mfr_sku": "140397",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7780858855475",
+      "base_sku": "DWGB-800188",
+      "sample_sku": "DWGB-800188-Sample",
+      "mfr_sku": "124699",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "19.6 in",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7786378592307",
+      "base_sku": "DWGB-800427",
+      "sample_sku": "DWGB-800427-Sample",
+      "mfr_sku": "140406",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7787376574515",
+      "base_sku": "DWGB-800508",
+      "sample_sku": "DWGB-800508-Sample",
+      "mfr_sku": "140433",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "50 cm (19.7 in)",
+      "cat_width_in": "",
+      "cat_image": "t",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price"
+      ]
+    },
+    {
+      "shopify_id": "7693323599923",
+      "base_sku": "DWWC-502720",
+      "sample_sku": "DWWC-502720-Sample",
+      "mfr_sku": "",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "",
+      "cat_width_in": "",
+      "cat_image": "",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price",
+        "Needs-Width",
+        "Needs-Image"
+      ]
+    },
+    {
+      "shopify_id": "7693323927603",
+      "base_sku": "DWWC-502740",
+      "sample_sku": "DWWC-502740-Sample",
+      "mfr_sku": "",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "",
+      "cat_width_in": "",
+      "cat_image": "",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price",
+        "Needs-Width",
+        "Needs-Image"
+      ]
+    },
+    {
+      "shopify_id": "7693323993139",
+      "base_sku": "DWWC-502760",
+      "sample_sku": "DWWC-502760-Sample",
+      "mfr_sku": "",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "",
+      "cat_width_in": "",
+      "cat_image": "",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price",
+        "Needs-Width",
+        "Needs-Image"
+      ]
+    },
+    {
+      "shopify_id": "7693324124211",
+      "base_sku": "DWWC-502790",
+      "sample_sku": "DWWC-502790-Sample",
+      "mfr_sku": "",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "",
+      "cat_width_in": "",
+      "cat_image": "",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price",
+        "Needs-Width",
+        "Needs-Image"
+      ]
+    },
+    {
+      "shopify_id": "7693324156979",
+      "base_sku": "DWWC-502800",
+      "sample_sku": "DWWC-502800-Sample",
+      "mfr_sku": "",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "",
+      "cat_width_in": "",
+      "cat_image": "",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price",
+        "Needs-Width",
+        "Needs-Image"
+      ]
+    },
+    {
+      "shopify_id": "7693326909491",
+      "base_sku": "DWWC-502820",
+      "sample_sku": "DWWC-502820-Sample",
+      "mfr_sku": "",
+      "price_retail": null,
+      "price_trade": null,
+      "price_source": "none",
+      "cat_width": "",
+      "cat_width_in": "",
+      "cat_image": "",
+      "cat_disc": false,
+      "tags": [
+        "Needs-Price",
+        "Needs-Width",
+        "Needs-Image"
+      ]
+    }
+  ],
+  "staged": [
+    {
+      "shopify_id": "7776864862259",
+      "base_sku": "DWGB-200008",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776866336819",
+      "base_sku": "DWGB-200024",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776866435123",
+      "base_sku": "DWGB-200025",
+      "roll_price": 238.91,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776866467891",
+      "base_sku": "DWGB-200026",
+      "roll_price": 238.91,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776866631731",
+      "base_sku": "DWGB-200028",
+      "roll_price": 238.91,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776866762803",
+      "base_sku": "DWGB-200029",
+      "roll_price": 238.91,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776866893875",
+      "base_sku": "DWGB-200030",
+      "roll_price": 238.91,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868204595",
+      "base_sku": "DWGB-200045",
+      "roll_price": 162.9,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868302899",
+      "base_sku": "DWGB-200046",
+      "roll_price": 162.9,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868335667",
+      "base_sku": "DWGB-200047",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868401203",
+      "base_sku": "DWGB-200048",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868433971",
+      "base_sku": "DWGB-200049",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868532275",
+      "base_sku": "DWGB-200050",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776868630579",
+      "base_sku": "DWGB-200051",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869023795",
+      "base_sku": "DWGB-200056",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869089331",
+      "base_sku": "DWGB-200057",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869187635",
+      "base_sku": "DWGB-200058",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869220403",
+      "base_sku": "DWGB-200059",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869417011",
+      "base_sku": "DWGB-200061",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869515315",
+      "base_sku": "DWGB-200062",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869613619",
+      "base_sku": "DWGB-200063",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776869974067",
+      "base_sku": "DWGB-200067",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776880951347",
+      "base_sku": "DWGB-200188",
+      "roll_price": 162.9,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776881770547",
+      "base_sku": "DWGB-200197",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776881836083",
+      "base_sku": "DWGB-200198",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776882196531",
+      "base_sku": "DWGB-200201",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776883769395",
+      "base_sku": "DWGB-200215",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776883834931",
+      "base_sku": "DWGB-200216",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776883998771",
+      "base_sku": "DWGB-200217",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776884031539",
+      "base_sku": "DWGB-200218",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776884129843",
+      "base_sku": "DWGB-200219",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776884228147",
+      "base_sku": "DWGB-200220",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776929185843",
+      "base_sku": "DWGB-200851",
+      "roll_price": 206.33,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776929513523",
+      "base_sku": "DWGB-200856",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776929710131",
+      "base_sku": "DWGB-200860",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776933314611",
+      "base_sku": "DWGB-200905",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776943112243",
+      "base_sku": "DWGB-200939",
+      "roll_price": 184.62,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776945569843",
+      "base_sku": "DWGB-200955",
+      "roll_price": 184.62,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776949796915",
+      "base_sku": "DWGB-200979",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776950747187",
+      "base_sku": "DWGB-200983",
+      "roll_price": 184.62,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776951173171",
+      "base_sku": "DWGB-200985",
+      "roll_price": 195.48,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7776951664691",
+      "base_sku": "DWGB-200987",
+      "roll_price": 238.91,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778835234867",
+      "base_sku": "DWGB-700067",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778836873267",
+      "base_sku": "DWGB-700115",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778839494707",
+      "base_sku": "DWGB-700205",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778839527475",
+      "base_sku": "DWGB-700206",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778840182835",
+      "base_sku": "DWGB-700226",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778841886771",
+      "base_sku": "DWGB-700285",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778841985075",
+      "base_sku": "DWGB-700288",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778843295795",
+      "base_sku": "DWGB-700327",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778843361331",
+      "base_sku": "DWGB-700328",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778843394099",
+      "base_sku": "DWGB-700329",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778845196339",
+      "base_sku": "DWGB-700361",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778845851699",
+      "base_sku": "DWGB-700382",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778845884467",
+      "base_sku": "DWGB-700383",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778845950003",
+      "base_sku": "DWGB-700386",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778847096883",
+      "base_sku": "DWGB-700423",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778859810867",
+      "base_sku": "DWGB-700431",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778859876403",
+      "base_sku": "DWGB-700432",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778847490099",
+      "base_sku": "DWGB-700437",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860040243",
+      "base_sku": "DWGB-700437",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778847522867",
+      "base_sku": "DWGB-700438",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860073011",
+      "base_sku": "DWGB-700438",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860105779",
+      "base_sku": "DWGB-700439",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860138547",
+      "base_sku": "DWGB-700440",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860269619",
+      "base_sku": "DWGB-700443",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860302387",
+      "base_sku": "DWGB-700444",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860335155",
+      "base_sku": "DWGB-700445",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860400691",
+      "base_sku": "DWGB-700447",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778847785011",
+      "base_sku": "DWGB-700448",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860498995",
+      "base_sku": "DWGB-700450",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860531763",
+      "base_sku": "DWGB-700451",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860597299",
+      "base_sku": "DWGB-700453",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860695603",
+      "base_sku": "DWGB-700455",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778850144307",
+      "base_sku": "DWGB-700514",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778850177075",
+      "base_sku": "DWGB-700515",
+      "roll_price": 400,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778850209843",
+      "base_sku": "DWGB-700516",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778851520563",
+      "base_sku": "DWGB-700566",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778851618867",
+      "base_sku": "DWGB-700568",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778851651635",
+      "base_sku": "DWGB-700569",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953134131",
+      "base_sku": "DWGB-800082",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953166899",
+      "base_sku": "DWGB-800083",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953297971",
+      "base_sku": "DWGB-800086",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953330739",
+      "base_sku": "DWGB-800087",
+      "roll_price": 65,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953363507",
+      "base_sku": "DWGB-800088",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953396275",
+      "base_sku": "DWGB-800089",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953429043",
+      "base_sku": "DWGB-800090",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953461811",
+      "base_sku": "DWGB-800091",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953494579",
+      "base_sku": "DWGB-800092",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953527347",
+      "base_sku": "DWGB-800093",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953658419",
+      "base_sku": "DWGB-800095",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953691187",
+      "base_sku": "DWGB-800096",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953723955",
+      "base_sku": "DWGB-800097",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953822259",
+      "base_sku": "DWGB-800098",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778953920563",
+      "base_sku": "DWGB-800099",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954674227",
+      "base_sku": "DWGB-800100",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954739763",
+      "base_sku": "DWGB-800101",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954805299",
+      "base_sku": "DWGB-800102",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954838067",
+      "base_sku": "DWGB-800103",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954870835",
+      "base_sku": "DWGB-800104",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954903603",
+      "base_sku": "DWGB-800105",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954936371",
+      "base_sku": "DWGB-800106",
+      "roll_price": 72,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778954969139",
+      "base_sku": "DWGB-800107",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955034675",
+      "base_sku": "DWGB-800108",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955067443",
+      "base_sku": "DWGB-800109",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955132979",
+      "base_sku": "DWGB-800111",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955165747",
+      "base_sku": "DWGB-800112",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955198515",
+      "base_sku": "DWGB-800113",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955231283",
+      "base_sku": "DWGB-800114",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955264051",
+      "base_sku": "DWGB-800115",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955296819",
+      "base_sku": "DWGB-800116",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955362355",
+      "base_sku": "DWGB-800118",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955427891",
+      "base_sku": "DWGB-800119",
+      "roll_price": 65,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955493427",
+      "base_sku": "DWGB-800120",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955526195",
+      "base_sku": "DWGB-800121",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955624499",
+      "base_sku": "DWGB-800123",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955722803",
+      "base_sku": "DWGB-800124",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955821107",
+      "base_sku": "DWGB-800125",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955886643",
+      "base_sku": "DWGB-800126",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955919411",
+      "base_sku": "DWGB-800127",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778955984947",
+      "base_sku": "DWGB-800128",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778956017715",
+      "base_sku": "DWGB-800129",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778956869683",
+      "base_sku": "DWGB-800131",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779660988467",
+      "base_sku": "DWGB-800132",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661021235",
+      "base_sku": "DWGB-800133",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661086771",
+      "base_sku": "DWGB-800134",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661152307",
+      "base_sku": "DWGB-800135",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661217843",
+      "base_sku": "DWGB-800136",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661348915",
+      "base_sku": "DWGB-800138",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661414451",
+      "base_sku": "DWGB-800139",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661479987",
+      "base_sku": "DWGB-800140",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661512755",
+      "base_sku": "DWGB-800141",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661643827",
+      "base_sku": "DWGB-800142",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779661840435",
+      "base_sku": "DWGB-800144",
+      "roll_price": 400,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779662004275",
+      "base_sku": "DWGB-800147",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779662135347",
+      "base_sku": "DWGB-800150",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779662233651",
+      "base_sku": "DWGB-800151",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779662331955",
+      "base_sku": "DWGB-800152",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779662757939",
+      "base_sku": "DWGB-800155",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779662889011",
+      "base_sku": "DWGB-800156",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779663904819",
+      "base_sku": "DWGB-800160",
+      "roll_price": 65,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664166963",
+      "base_sku": "DWGB-800163",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664429107",
+      "base_sku": "DWGB-800165",
+      "roll_price": 210,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664461875",
+      "base_sku": "DWGB-800166",
+      "roll_price": 133,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664592947",
+      "base_sku": "DWGB-800168",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664724019",
+      "base_sku": "DWGB-800169",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664822323",
+      "base_sku": "DWGB-800171",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779664953395",
+      "base_sku": "DWGB-800174",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7779665313843",
+      "base_sku": "DWGB-800175",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780167057459",
+      "base_sku": "DWGB-800177",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780167254067",
+      "base_sku": "DWGB-800178",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780858363955",
+      "base_sku": "DWGB-800179",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780858429491",
+      "base_sku": "DWGB-800180",
+      "roll_price": 104.5,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780858560563",
+      "base_sku": "DWGB-800182",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780858691635",
+      "base_sku": "DWGB-800185",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780858953779",
+      "base_sku": "DWGB-800190",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780859052083",
+      "base_sku": "DWGB-800192",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780859871283",
+      "base_sku": "DWGB-800193",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7780860067891",
+      "base_sku": "DWGB-800195",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579227187",
+      "base_sku": "DWGB-800197",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579292723",
+      "base_sku": "DWGB-800198",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579391027",
+      "base_sku": "DWGB-800200",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579456563",
+      "base_sku": "DWGB-800201",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579554867",
+      "base_sku": "DWGB-800202",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579620403",
+      "base_sku": "DWGB-800203",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579882547",
+      "base_sku": "DWGB-800204",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781579948083",
+      "base_sku": "DWGB-800205",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781580406835",
+      "base_sku": "DWGB-800211",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781580439603",
+      "base_sku": "DWGB-800212",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781580636211",
+      "base_sku": "DWGB-800214",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781581422643",
+      "base_sku": "DWGB-800215",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781581619251",
+      "base_sku": "DWGB-800216",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781581684787",
+      "base_sku": "DWGB-800217",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781581717555",
+      "base_sku": "DWGB-800218",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781581815859",
+      "base_sku": "DWGB-800219",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781582012467",
+      "base_sku": "DWGB-800223",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781582143539",
+      "base_sku": "DWGB-800225",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781582307379",
+      "base_sku": "DWGB-800226",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781582635059",
+      "base_sku": "DWGB-800230",
+      "roll_price": 400,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781582733363",
+      "base_sku": "DWGB-800231",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781583028275",
+      "base_sku": "DWGB-800233",
+      "roll_price": 133,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781583093811",
+      "base_sku": "DWGB-800234",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781583159347",
+      "base_sku": "DWGB-800235",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7781583290419",
+      "base_sku": "DWGB-800236",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120535603",
+      "base_sku": "DWGB-800239",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120568371",
+      "base_sku": "DWGB-800240",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120601139",
+      "base_sku": "DWGB-800241",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120732211",
+      "base_sku": "DWGB-800243",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120764979",
+      "base_sku": "DWGB-800244",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120896051",
+      "base_sku": "DWGB-800245",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783120928819",
+      "base_sku": "DWGB-800246",
+      "roll_price": 72,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121027123",
+      "base_sku": "DWGB-800248",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121092659",
+      "base_sku": "DWGB-800250",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121158195",
+      "base_sku": "DWGB-800251",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121190963",
+      "base_sku": "DWGB-800252",
+      "roll_price": 95,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121322035",
+      "base_sku": "DWGB-800254",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121387571",
+      "base_sku": "DWGB-800255",
+      "roll_price": 400,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121518643",
+      "base_sku": "DWGB-800256",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121616947",
+      "base_sku": "DWGB-800257",
+      "roll_price": 80,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121682483",
+      "base_sku": "DWGB-800258",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121715251",
+      "base_sku": "DWGB-800259",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121813555",
+      "base_sku": "DWGB-800260",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783121944627",
+      "base_sku": "DWGB-800262",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783122010163",
+      "base_sku": "DWGB-800263",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783122108467",
+      "base_sku": "DWGB-800266",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783122894899",
+      "base_sku": "DWGB-800267",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783122927667",
+      "base_sku": "DWGB-800268",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123222579",
+      "base_sku": "DWGB-800270",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123288115",
+      "base_sku": "DWGB-800271",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123320883",
+      "base_sku": "DWGB-800272",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123386419",
+      "base_sku": "DWGB-800273",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123451955",
+      "base_sku": "DWGB-800274",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123484723",
+      "base_sku": "DWGB-800275",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123615795",
+      "base_sku": "DWGB-800276",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123681331",
+      "base_sku": "DWGB-800277",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7783123746867",
+      "base_sku": "DWGB-800278",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784905474099",
+      "base_sku": "DWGB-800282",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784908685363",
+      "base_sku": "DWGB-800284",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784910815283",
+      "base_sku": "DWGB-800285",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784916484147",
+      "base_sku": "DWGB-800288",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784920121395",
+      "base_sku": "DWGB-800290",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784922021939",
+      "base_sku": "DWGB-800291",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784923365427",
+      "base_sku": "DWGB-800292",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784925757491",
+      "base_sku": "DWGB-800293",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784927952947",
+      "base_sku": "DWGB-800294",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784930082867",
+      "base_sku": "DWGB-800295",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784934277171",
+      "base_sku": "DWGB-800297",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784937259059",
+      "base_sku": "DWGB-800299",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784940470323",
+      "base_sku": "DWGB-800302",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784942534707",
+      "base_sku": "DWGB-800303",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784945614899",
+      "base_sku": "DWGB-800305",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784949055539",
+      "base_sku": "DWGB-800307",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784951382067",
+      "base_sku": "DWGB-800308",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784953643059",
+      "base_sku": "DWGB-800309",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784955346995",
+      "base_sku": "DWGB-800310",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784960163891",
+      "base_sku": "DWGB-800312",
+      "roll_price": 400,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784962097203",
+      "base_sku": "DWGB-800313",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784969076787",
+      "base_sku": "DWGB-800317",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7784972320819",
+      "base_sku": "DWGB-800319",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785754427443",
+      "base_sku": "DWGB-800320",
+      "roll_price": 100,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785754918963",
+      "base_sku": "DWGB-800322",
+      "roll_price": 133,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755017267",
+      "base_sku": "DWGB-800325",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755213875",
+      "base_sku": "DWGB-800328",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755279411",
+      "base_sku": "DWGB-800329",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755508787",
+      "base_sku": "DWGB-800333",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755541555",
+      "base_sku": "DWGB-800334",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755672627",
+      "base_sku": "DWGB-800337",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785755738163",
+      "base_sku": "DWGB-800339",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785756164147",
+      "base_sku": "DWGB-800340",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785756524595",
+      "base_sku": "DWGB-800341",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785756622899",
+      "base_sku": "DWGB-800343",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785756688435",
+      "base_sku": "DWGB-800344",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785756983347",
+      "base_sku": "DWGB-800350",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785757048883",
+      "base_sku": "DWGB-800352",
+      "roll_price": 80,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785757704243",
+      "base_sku": "DWGB-800357",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785757900851",
+      "base_sku": "DWGB-800358",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785758130227",
+      "base_sku": "DWGB-800359",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7785758294067",
+      "base_sku": "DWGB-800360",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786022535219",
+      "base_sku": "DWGB-800361",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786022797363",
+      "base_sku": "DWGB-800362",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786022993971",
+      "base_sku": "DWGB-800363",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023026739",
+      "base_sku": "DWGB-800364",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023092275",
+      "base_sku": "DWGB-800365",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023125043",
+      "base_sku": "DWGB-800366",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023157811",
+      "base_sku": "DWGB-800367",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023288883",
+      "base_sku": "DWGB-800369",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023321651",
+      "base_sku": "DWGB-800370",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023354419",
+      "base_sku": "DWGB-800371",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023419955",
+      "base_sku": "DWGB-800372",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023452723",
+      "base_sku": "DWGB-800373",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023518259",
+      "base_sku": "DWGB-800374",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023616563",
+      "base_sku": "DWGB-800376",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023649331",
+      "base_sku": "DWGB-800377",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023682099",
+      "base_sku": "DWGB-800378",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023714867",
+      "base_sku": "DWGB-800379",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023747635",
+      "base_sku": "DWGB-800380",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023878707",
+      "base_sku": "DWGB-800381",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023911475",
+      "base_sku": "DWGB-800382",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786023944243",
+      "base_sku": "DWGB-800383",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786024009779",
+      "base_sku": "DWGB-800384",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786024042547",
+      "base_sku": "DWGB-800385",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786024140851",
+      "base_sku": "DWGB-800387",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786024337459",
+      "base_sku": "DWGB-800388",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786024435763",
+      "base_sku": "DWGB-800389",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025320499",
+      "base_sku": "DWGB-800391",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025418803",
+      "base_sku": "DWGB-800392",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025549875",
+      "base_sku": "DWGB-800396",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025582643",
+      "base_sku": "DWGB-800397",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025615411",
+      "base_sku": "DWGB-800398",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025680947",
+      "base_sku": "DWGB-800400",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786025713715",
+      "base_sku": "DWGB-800401",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786375479347",
+      "base_sku": "DWGB-800402",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786375577651",
+      "base_sku": "DWGB-800403",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786375675955",
+      "base_sku": "DWGB-800404",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786375807027",
+      "base_sku": "DWGB-800406",
+      "roll_price": 32,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786375970867",
+      "base_sku": "DWGB-800407",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376101939",
+      "base_sku": "DWGB-800409",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376167475",
+      "base_sku": "DWGB-800410",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376265779",
+      "base_sku": "DWGB-800411",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376364083",
+      "base_sku": "DWGB-800412",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376462387",
+      "base_sku": "DWGB-800413",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376527923",
+      "base_sku": "DWGB-800414",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376790067",
+      "base_sku": "DWGB-800415",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786376953907",
+      "base_sku": "DWGB-800416",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786377838643",
+      "base_sku": "DWGB-800420",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786377904179",
+      "base_sku": "DWGB-800421",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786378330163",
+      "base_sku": "DWGB-800423",
+      "roll_price": 80,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786378428467",
+      "base_sku": "DWGB-800425",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786379313203",
+      "base_sku": "DWGB-800432",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786379935795",
+      "base_sku": "DWGB-800433",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786380066867",
+      "base_sku": "DWGB-800435",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786380230707",
+      "base_sku": "DWGB-800438",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786380329011",
+      "base_sku": "DWGB-800439",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786380558387",
+      "base_sku": "DWGB-800442",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786965958707",
+      "base_sku": "DWGB-800443",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786966024243",
+      "base_sku": "DWGB-800444",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786966057011",
+      "base_sku": "DWGB-800445",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786966155315",
+      "base_sku": "DWGB-800446",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786966188083",
+      "base_sku": "DWGB-800447",
+      "roll_price": 25,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786966482995",
+      "base_sku": "DWGB-800450",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786967695411",
+      "base_sku": "DWGB-800457",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786968973363",
+      "base_sku": "DWGB-800463",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786969235507",
+      "base_sku": "DWGB-800465",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786969694259",
+      "base_sku": "DWGB-800468",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786969956403",
+      "base_sku": "DWGB-800469",
+      "roll_price": 65,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786970415155",
+      "base_sku": "DWGB-800471",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786970808371",
+      "base_sku": "DWGB-800473",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7786972676147",
+      "base_sku": "DWGB-800481",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787375460403",
+      "base_sku": "DWGB-800488",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787375558707",
+      "base_sku": "DWGB-800489",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787375722547",
+      "base_sku": "DWGB-800494",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787375755315",
+      "base_sku": "DWGB-800495",
+      "roll_price": 60,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787375820851",
+      "base_sku": "DWGB-800496",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787375853619",
+      "base_sku": "DWGB-800497",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787376312371",
+      "base_sku": "DWGB-800502",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787376443443",
+      "base_sku": "DWGB-800505",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787376508979",
+      "base_sku": "DWGB-800506",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787376541747",
+      "base_sku": "DWGB-800507",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787376836659",
+      "base_sku": "DWGB-800511",
+      "roll_price": 76,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787376902195",
+      "base_sku": "DWGB-800512",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787377066035",
+      "base_sku": "DWGB-800515",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787377229875",
+      "base_sku": "DWGB-800517",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7787377360947",
+      "base_sku": "DWGB-800521",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361070131",
+      "base_sku": "DWGB-800522",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361168435",
+      "base_sku": "DWGB-800525",
+      "roll_price": 400,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361397811",
+      "base_sku": "DWGB-800531",
+      "roll_price": 65,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361496115",
+      "base_sku": "DWGB-800533",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361594419",
+      "base_sku": "DWGB-800535",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361627187",
+      "base_sku": "DWGB-800536",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361692723",
+      "base_sku": "DWGB-800537",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361791027",
+      "base_sku": "DWGB-800539",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361823795",
+      "base_sku": "DWGB-800540",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361856563",
+      "base_sku": "DWGB-800541",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789361922099",
+      "base_sku": "DWGB-800542",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362151475",
+      "base_sku": "DWGB-800546",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362282547",
+      "base_sku": "DWGB-800549",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362413619",
+      "base_sku": "DWGB-800551",
+      "roll_price": 57,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362446387",
+      "base_sku": "DWGB-800552",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362544691",
+      "base_sku": "DWGB-800554",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362577459",
+      "base_sku": "DWGB-800555",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789362642995",
+      "base_sku": "DWGB-800556",
+      "roll_price": 57,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789363429427",
+      "base_sku": "DWGB-800558",
+      "roll_price": 57,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789363494963",
+      "base_sku": "DWGB-800559",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597098035",
+      "base_sku": "DWGB-800561",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597163571",
+      "base_sku": "DWGB-800562",
+      "roll_price": 57,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597261875",
+      "base_sku": "DWGB-800563",
+      "roll_price": 105,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597327411",
+      "base_sku": "DWGB-800564",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597458483",
+      "base_sku": "DWGB-800568",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597655091",
+      "base_sku": "DWGB-800571",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597687859",
+      "base_sku": "DWGB-800572",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597753395",
+      "base_sku": "DWGB-800574",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597818931",
+      "base_sku": "DWGB-800576",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597851699",
+      "base_sku": "DWGB-800577",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789597982771",
+      "base_sku": "DWGB-800581",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598048307",
+      "base_sku": "DWGB-800582",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598113843",
+      "base_sku": "DWGB-800584",
+      "roll_price": 170,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598146611",
+      "base_sku": "DWGB-800585",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598244915",
+      "base_sku": "DWGB-800587",
+      "roll_price": 150,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598277683",
+      "base_sku": "DWGB-800588",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598343219",
+      "base_sku": "DWGB-800590",
+      "roll_price": 180,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598375987",
+      "base_sku": "DWGB-800591",
+      "roll_price": 80,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598474291",
+      "base_sku": "DWGB-800592",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598572595",
+      "base_sku": "DWGB-800594",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598605363",
+      "base_sku": "DWGB-800595",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598638131",
+      "base_sku": "DWGB-800596",
+      "roll_price": 190,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7789598769203",
+      "base_sku": "DWGB-800599",
+      "roll_price": 200,
+      "reason": "budget-cap"
+    },
+    {
+      "shopify_id": "7778860990515",
+      "base_sku": "SKL10155",
+      "roll_price": 220,
+      "reason": "budget-cap"
+    }
+  ],
+  "failed": [],
+  "byPriceSource": {},
+  "budget": {
+    "who": "roll",
+    "want": 387,
+    "granted": 0,
+    "refunded": 0
+  },
+  "geminiCostUsd": 0,
+  "pgUpdated": "BEGIN\nCREATE TABLE\nINSERT 0 387\nUPDATE 387\n387\nCOMMIT",
+  "finished": "2026-06-22T22:05:03.246Z",
+  "totals": {
+    "rollVariantsCreated": 0,
+    "rollVariantsWouldCreate": 0,
+    "stayedSampleOnly_NeedsPrice": 14,
+    "stagedForNextWindow": 387,
+    "skippedAlreadyHadRoll": 0,
+    "scrapedFresh": 0,
+    "failed": 0
+  }
+}
\ No newline at end of file

← f267c8cf Bucket B Schumacher roll-variant recovery script (feed-first  ·  back to Designer Wallcoverings  ·  auto-save: 2026-06-22T15:07:02 (33 files) — logs/ shopify/sc 319f6017 →