← back to Greenland China
ONBOARDING-MAP.md
63 lines
# Greenland → Designer Wallcoverings — Onboarding Field Map
_Planning doc only. Greenland is **net-new** — not in `dw_unified`. Nothing here writes
to Shopify or `dw_unified`; those steps are Steve-gated._
## Open decisions for Steve (blockers before mapping is final)
1. **Private-label or named?** Greenland is China-direct. DW's pattern for such lines is
to relabel (WallQuest → *Malibu*, Command54 → *Phillipe Romano*, Justin David →
*Phillipe Romano*). **Is "Greenland" allowed to be customer-facing, or does it get a
DW house label?** This decides titles, tags, image alt text, and leak-scanner rules.
2. **DW series / SKU prefix.** New vendor needs a `DWxx` series code (e.g. the way
Sister Parish = `DWPH`). What prefix?
3. **Cost basis.** No usable price in the feed (`unit_price` = placeholder `2`). Need a
real cost list/quote → retail via `cost / 0.65 / 0.85`.
## Field mapping
| Greenland field | DW target | Transform / notes |
|---|---|---|
| `id` | internal `vendor_ref` | stable unique key; **use this**, not `sku` |
| `sku` / `code` | mfr SKU → DW variant SKU (`<PREFIX><n>`) | mfr code for 786/800; normalize ~14 color-name outliers first |
| `pattern` | product **title** / pattern name | human name; if private-label, rename per house convention |
| `code` (color name, on outliers) | **colorway / option value** | inconsistent — derive color from title/enrichment where `code` is a mfr code |
| `category` | product type | Wallcovering (795) / Engineering wallpaper (5) |
| `wall_class` | **material** metafield + tag(s) | 20 values; drives the ≥2-tags rule |
| `wall_type` | collection / **book** | only 50% present |
| `width` | `width` spec metafield | e.g. `91.5 cm/36"` — split value+unit |
| `repeat` | `repeat` spec metafield | ⚠️ **0% captured — must re-scrape** |
| `fire_rating` | `fire_rating` metafield | mostly `ASTM E84 Class A` |
| `backing` | `backing` metafield | e.g. `Non Woven` |
| `weight` | `weight` metafield | ⚠️ confirm units (g/m²?) |
| `composition` | `composition` metafield | only 21% present |
| `minimum_order` | MOQ / min-order field | e.g. `5.5 meters / 6 yards` |
| `cover_image` + `images` | product images | 7 rows have none — fix/drop |
| `colorways` | linked colorway variants | only 18% present |
| `unit_price` | **do not use** | placeholder `2`; price from cost basis instead |
| `url` | `vendor_source_url` (admin only) | never customer-facing |
## DW 5-field readiness (per active-SKU rule)
Every active DW SKU needs: (1) sample variant, (2) sellable variant, (3) complete
pricing, (4) description, (5) ≥2 tags. Greenland status today:
| Requirement | Status from feed |
|---|---|
| Sample variant | ✖ must be constructed at import |
| Sellable variant | ✖ must be constructed at import |
| Complete pricing | ✖ **blocked — no cost basis** |
| Description | ✖ none in feed — must be generated (dw-marketing-copy) |
| ≥2 tags | ◑ derivable now from `category` + `wall_class` (+ `wall_type` where present) |
## Suggested pipeline (once decisions above are made)
1. Fix scraper (`repeat`, colorways, composition) + re-pull.
2. Secure cost list → compute retail (`cost/0.65/0.85`).
3. Normalize identity (mfr code → SKU, de-dupe, resolve color).
4. Assign DW series/prefix + private-label decision.
5. Generate descriptions + tags; build sample + sellable variants.
6. Settlement gate is **not** applicable (no tropical/foliage AI generation here) — but
run the standard leak-scanner rules if relabeled.
7. Steve-gated: push to `dw_unified` / Shopify.