← back to Dw Unbuyable Recovery Pilot

data/scalamandre-reconcile.md

38 lines

# TK-10978 — Scalamandre identity-reconciliation (read-only feasibility) · 2026-08-30

The Scalamandre live line (`DWA-*`, mfr `wp#####`) and `scalamandre_catalog` (`DWSC-*`,
mfr `SCWP#####`) have divergent SKU identities, so the SKU-join yields 0 (unlike Wolf
Gordon). But the catalog carries clean `pattern_name` + `color_name`, and the live titles
carry `Pattern - Color` — so a **semantic (content) match** bridges the gap.

## Method
Normalize live title → (pattern = before first ` - `, color = last segment before ` | `);
match against catalog wallcovering rows (excl. pillows) on pattern⊇ + color⊇; keep only
UNIQUE (n=1) matches. Retail = `price_trade / 0.65 / 0.85`.

## Result (474 unbuyable Scalamandre)
| Bucket | Count | % | Disposition |
|---|---:|---:|---|
| **Unique match** | **133** | 28% | recoverable — high precision (**8/8 spot-checks exact**) |
| Ambiguous (multi-match) | 38 | 8% | needs disambiguation (multiple colorways) |
| No match | 303 | 64% | not in the costed catalog → cost-sourcing |

## Verified facts
- **Precision**: 8/8 sampled unique matches were exact (Suzhou Lattice/Aquamarine,
  Sisal/Wheat, Mikonos/Blue & Green, Chinoise Exotique/Tomato, …).
- **Recovery action = ADD-ROLL** (not restructure): live Shopify GET on 3 confirmed all
  133 are genuinely **sample-only** ($4.25 lone Sample) → add a "Sold Per Roll" variant at
  the reconciled cost, keep the $4.25 Sample. (Different from WG, which was the RR-defect.)
- Dry-run match list: `data/scalamandre-reconcile-dryrun.csv` (133 rows,
  shopify_sku → catalog_dw_sku → price_trade → computed_retail).

## Residual risk (fold this into any execution)
The match uses substring `LIKE` — only 8 of 133 were eyeballed. A wrong colorway match =
a wrong customer-facing price. Before pricing: tighten substring→**exact** normalized
match, and **live-verify each product + its match** (VERIFY-BEFORE-ACT). Recommend a small
pilot (≈20) first, like the WG rollout.

**Status:** feasibility PROVEN + gated recovery drafted to pending-approval (route
vp-dw-commerce). Not executed. 38 ambiguous + 303 no-match remain (disambiguation /
cost-sourcing).