← back to Wolfgordon Crawl
Add reconciliation dry-run report + pricing-status finding
48267d61c70d7dc87f0c16206cfa032ef59554a7 · 2026-06-19 09:40:52 -0700 · Steve
Files touched
A RECONCILIATION-DRYRUN.md
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 →