[object Object]

← back to Wolfgordon Crawl

Add reconciliation dry-run report + pricing-status finding

48267d61c70d7dc87f0c16206cfa032ef59554a7 · 2026-06-19 09:40:52 -0700 · Steve

Files touched

Diff

commit 48267d61c70d7dc87f0c16206cfa032ef59554a7
Author: Steve <steve@designerwallcoverings.com>
Date:   Fri Jun 19 09:40:52 2026 -0700

    Add reconciliation dry-run report + pricing-status finding
---
 RECONCILIATION-DRYRUN.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/RECONCILIATION-DRYRUN.md b/RECONCILIATION-DRYRUN.md
new file mode 100644
index 0000000..19dc7d4
--- /dev/null
+++ b/RECONCILIATION-DRYRUN.md
@@ -0,0 +1,50 @@
+# Wolf Gordon re-onboarding — reconciliation DRY RUN (2026-06-19)
+
+Read-only. No writes to shopify_products or live Shopify. Re-run anytime:
+`node reconcile.js` and `node unmatched-analysis.js`.
+
+## Catalog (source of truth: dw_unified.wolf_gordon_catalog)
+- 5,483 rows. ALL now carry a conforming sequential `DWWG-<n>` SKU (530001..535483).
+- The 106 previously-NULL rows were assigned DWWG-535378..535483 (local fix, applied).
+
+## Legacy Shopify reconciliation (1,068 products, vendor='Wolf Gordon')
+Match keys (since the website reformatted SKUs):
+  PRIMARY  = normalized mfr_sku (strip space/hyphen + trailing "_8")
+  FALLBACK = normalized(pattern_name) + "|" + normalized(color from title)
+
+| Bucket | Count | Meaning |
+|---|---|---|
+| [A] normalized-SKU match | 255 | safely re-mappable to the new sequential DW SKU |
+| [B] pattern+color match  | 24  | safely re-mappable (fallback) |
+| [C] ambiguous            | 0   | none |
+| [D] unmatched            | 789 | discontinue candidates |
+| **legacy total** | **1,068** | |
+| [E] net-new catalog rows | 5,204 | catalog products with no legacy peer |
+
+KEY CORRECTION to the briefing: a NAIVE raw-string SKU match yields ~2, but a
+PUNCTUATION-NORMALIZED SKU match recovers 255. The site did NOT recode the SKU
+*values* — it reformatted them (CCT-2670 -> "CCT 2670", BOS-4399_8 -> "BOS 4399").
+So 279 of 1,068 (26%) re-map cleanly without any prod renaming guesswork.
+
+## The 789 unmatched, broken down
+- 174 — legacy pattern_name is just the SKU echoed (weak old import data,
+        e.g. "Ambient Design / AD10336", "SM8008"). Unmatchable by pattern+color.
+- 614 — real pattern name that no longer exists anywhere in the new catalog =
+        GENUINE DISCONTINUE (per DW rule: ARCHIVE, never delete/draft).
+- 1   — pattern still exists, exact color/sku drifted (recoverable by hand:
+        DWWG-WWDF-211 WonderWood / Oak Gray Dark Qtd).
+By Shopify status: 659 ACTIVE, 105 ARCHIVED, 4 DRAFT, 21 DELETED_FROM_SHOPIFY.
+
+## Proposed migration plan (Steve-gated — NOT executed)
+1. [A]+[B] = 279 legacy products -> rename SKU embedded->sequential (prod write).
+2. [D]/614 + 174 weak = ~788 legacy ACTIVE/etc. with no catalog peer -> ARCHIVE.
+3. [E] = 5,204 net-new catalog rows -> onboard as new products (BLOCKED on pricing).
+
+## Pricing status (BLOCKER, partly resolved)
+- vendor_registry.vendor_discount_pct = 0.00 (unset).
+- BUT 2,769 / 5,483 catalog rows already have price_retail + price_trade
+  (retail = trade x 1.81 exactly = DW cost/0.65/0.85 markup). These predate this
+  crawl (the current scraper does NOT scrape price). Need Steve to confirm whether
+  price_trade == our WHOLESALE COST (then existing prices are correct) or WG's
+  published list (then they are over-marked-up and must be recomputed from a real
+  discount). 2,714 rows still have NO price at all.

← 5bbaafe Add unmatched-legacy analysis (174 weak-data, 614 discontinu  ·  back to Wolfgordon Crawl  ·  Add clean catalog-driven Wolf Gordon Shopify pusher (dry-run a9497fc →