← back to Elitis Price 2026
FOLLOWUP_scrape_403.md
75 lines
# Elitis Spring-2026 — Follow-up scrape needed (WS3 leftovers)
Two buckets of new-on-list Elitis SKUs could **not** be built into DRAFT
colorway products in this reconciliation, because the prior-work data
(`elitis_catalog.json`) carries only `pattern_name, color_name, mfr_sku, width,
product_type` — **no image URLs and no specs beyond width** — and for the second
bucket, no reliable catalog pattern to join against at all.
Per the standing rule *"do NOT create hollow products"*, these were **routed
here instead of force-built**. Run the vendor scrape below to capture real
images + specs, then re-run `exec/ws3_drafts.py` (extend it to consume the
scraped rows).
## Scrape command
```
/elitis # elitis.com main wallcovering catalog
/elitispanoramic # elitis.com Panoramique / mural line
```
Both currently route to the shared `product-import-from-url` engine. Per Steve's
standing rule *every vendor gets its own dedicated `*-scraper-manager` skill*,
an `elitis-scraper-manager` should be authored (feed-first, $0 local extraction)
— the shared engine is the interim.
What the scrape must capture per SKU (the fields missing today):
- **image** (real product/swatch photo) — hard-blocks ACTIVE until present
- **width** metafield (have it for bucket B; missing for bucket A)
- **specs** — repeat, roll/panel dimensions, material/contents, fire rating for
the Commercial line
- confirm **unit** (Roll / Yard / Panel / "Lot of 9 pieces") and per-SKU price
## Bucket A — 403 SKUs with NO catalog data at all
Source: `OUT_577_no_catalog_data.csv` (list_sku, collection, pattern, unit,
us1_cost, retail — retail already = round(US1/0.65/0.85, 2)).
- 403 rows across ~78 collections (Panoramique 41, Soleil levant 19, Tempo 18,
360° 16, Talamone 12, Essences de bois 12, Voiles de papier 10, Pleats 9,
Flower power 9, Initiation 9, Volver 9, Mille millions 8, Parfums 8, Parade 8,
Les petites histoires 8, Kandy 7, Nature précieuse 7, Formentera 7 …).
- Units: Roll 274, Yard 119, "Lot of 9 pieces" 8, Panel 2. NB the "Lot of 9
pieces" unit is new — decide packaging/variant title before building those 8.
## Bucket B — 86 staging rows whose pattern did NOT exact-match the catalog
Source: `OUT_577_staging_join.csv`, the rows whose `pattern` is NOT a key in
`elitis_catalog.json` `pattern_name`. ~150 colorways across 60 patterns.
These are almost all **accent / spelling / suffix drift** vs the catalog, e.g.:
- `Colosse frutier` → catalog `Colosse fruitier`
- `Eclat` / `Eclats cosmiques` → `Éclat` / `Éclats cosmiques`
- `Panthere` → `Panthère`, `Icone` → `Icône`, `Metal brush`/`(métal)` suffixes
- `Medina`→`Médina`, `Eternite`→`Éternité`, `Pepite`→`Pépite`, etc.
Fix path (cheaper than re-scraping B): build an accent-insensitive /
casefold+unidecode pattern matcher in `ws3_drafts.py` (`build_targets`), re-run
`--report`, eyeball the newly-joined patterns, then build. Only genuinely-new
patterns fall through to the scrape.
Distinct unmatched patterns (60): Abstract floral, Algues dorées, Amara,
Aspirations fusionnelles, Au pied du Ventoux, Ballet, Big croco (métal), Blasons,
Bleu comme une Rose, Brocéliande, Brume, Brumes laquées, Bury, Colosse frutier,
Costalegre, Eclat, Eclats cosmiques, Enlace, Epi, Eternite, Flirt aquatique,
Hope (métal), Hydra, Icone, Kosa silk (métal), L'Eden et après, L'appel de la
forêt, L'habit de Vénus, Leopard, Lignes telluriques, Liège, Manihi, Marques de
l'Empire, Metal brush, Mise en scène, Movida (métal), Médina, Métallisé, Nuit
cinétique, Palette, Panthere, Pepite, Pignada, Prosperine, Rama, Retour des
Indes, Sashiko, Seta (métal), Silva, Sol, Solstice, Sperenza, Terres lointaines,
Tigre royal, Twist lin, Une certaine magnificence, Vol au vent, Voltige, Voyage
sur un Nuage, Zakinthos.
## Built this run (for reference)
- WS3 buildable (exact-pattern-match, not already on Shopify): **331** DRAFT
colorways created via `exec/ws3_drafts.py` (DRAFT + `Needs-Image`, real
pattern/color/width/retail, Size option + Sample + sellable). They still need
the **image** backfill from the same scrape — every one carries `Needs-Image`.