[object Object]

← back to Wallco Ai

report: dw-stale-urls rescrape pass (4 vendors, 806 products refreshed)

079feef86e9e28d7fb4ef2eb69fe4998d36b3eb1 · 2026-05-19 22:00:39 -0700 · SteveStudio2

Files touched

Diff

commit 079feef86e9e28d7fb4ef2eb69fe4998d36b3eb1
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Tue May 19 22:00:39 2026 -0700

    report: dw-stale-urls rescrape pass (4 vendors, 806 products refreshed)
---
 reports/dw-stale-urls-rescrape-2026-05-19.md | 60 ++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/reports/dw-stale-urls-rescrape-2026-05-19.md b/reports/dw-stale-urls-rescrape-2026-05-19.md
new file mode 100644
index 0000000..f680644
--- /dev/null
+++ b/reports/dw-stale-urls-rescrape-2026-05-19.md
@@ -0,0 +1,60 @@
+# DW Stale URLs — Re-scrape Pass Report
+
+**Date**: 2026-05-19
+**Scope**: 4 highest-volume vendors flagged by the dead-image audit (Romo, Ralph Lauren Fabric, Glitter Walls, Arte International) = 2,355 affected products.
+**Operator**: Substep A — re-scrape half (run from Mac2).
+
+## Per-vendor outcome
+
+| Vendor | Affected | Refreshed this pass | Method | Catalog table | Skill used |
+|---|---:|---:|---|---|---|
+| Romo | 930 | **797** | SKU dash→slash normalization match against existing `romo_catalog` rows with alive vendor-CDN URLs | `romo_catalog` | — (no scrape needed; prior agent SKU-join bug) |
+| Arte International | 133 | **9** | Fetched 9 known PDPs from `arte_rescrape`, extracted `og:image` meta tag, HEAD-verified | `arte_rescrape` | none (inline curl) |
+| Ralph Lauren Fabric | 1,055 | 0 | — | NO actionable table (rl_catalog stores only dead URLs) | none — needs new skill |
+| Glitter Walls | 237 | 0 | — | `glitter_walls_catalog` (16 rows) effectively empty for these SKUs | none — needs new skill |
+| **TOTAL** | **2,355** | **806** | | | |
+
+## Headline finding — Romo SKU normalization bug
+
+The prior swap-proposal builder joined on `UPPER(catalog.mfr_sku) = UPPER(proposal.sku)`. Romo stores SKUs as `W920/02` (slash); Shopify stores them as `W920-02` (dash). **Every one of the 930 "no replacement found" Romo SKUs was a false negative** — 797 of them had alive `static.theromogroup.com` vendor-CDN URLs sitting unused in `romo_catalog`. No scraping required. 
+
+This format-mismatch likely affects other vendors as well. Recommendation in `~/Projects/dw-monitoring/rescrape-todo/romo.md`.
+
+## Push-A2 hand-off
+
+All 806 refreshed swap proposals were inserted into a new staging table:
+
+```sql
+SELECT vendor, COUNT(*), source_table FROM image_url_swap_proposals_2026_05_19_v2 GROUP BY vendor, source_table;
+-- Arte International | 9   | arte_pdp_og_image
+-- Romo               | 797 | romo_catalog
+```
+
+Schema includes `match_strategy` column for traceability. All 806 proposals have `new_url_status_in_cache='success'`.
+
+**No** writes to `shopify_products`. **No** Shopify Admin API calls. **No** deletes from `image_hashes` (only 2 UPDATEs of `status` for the 2 newly verified Arte URLs).
+
+## Discontinued / un-fixable counts
+
+- **Romo**: 59 SKUs not in `romo_catalog` at all under either dash or slash form. Likely discontinued at vendor — needs site-walk to confirm.
+- **Romo**: 74 SKUs have vendor-CDN URLs in `romo_catalog` but failed previous image-fetcher with `decode_error` (corrupt JPEG / premature EOF — transient). Sample HEAD-test showed all 10 sampled return 200. Recommend relaxed-Sharp re-run.
+- **Arte**: 124 SKUs have no entry in `arte_rescrape` and only the dead Shopify URL in `arte_catalog`. Full Arte vendor site-walk required.
+- **Ralph Lauren Fabric**: 1,055 SKUs — none have any vendor-side URL anywhere. Full new scraper required.
+- **Glitter Walls**: 237 SKUs — `glitter_walls_catalog` is 16 rows and uses incompatible slug-based SKUs. Full new scraper required.
+
+## Stub list — skill builds needed
+
+Per-vendor stubs written to `~/Projects/dw-monitoring/rescrape-todo/`:
+
+- `romo.md` — fix the 74 decode-error retries + 59 deep-scrape via existing `romo-scraper-manager` (Kamatera-only).
+- `arte-international.md` — invoke `arte-international-colorway-scraper` skill for full vendor crawl.
+- `ralph-lauren-fabric.md` — **NEW** `ralph-lauren-fabric-scraper-manager` skill needs to be authored. `rlf-crawler` Express viewer exists but references a non-existent `rlf_catalog` table and has no scraping logic.
+- `glitter-walls.md` — **NEW** `glitter-walls-scraper-manager` skill needs to be authored. Vendor is `glitterwalls.com` (no trade portal). SKU appears to map to PDP slug 1:1 — worth HEAD-testing 5 SKUs to confirm the pattern.
+
+## Hard constraints honored
+
+- [x] No writes to `shopify_products`
+- [x] No Shopify Admin API calls (push-A2 will handle storefront writes)
+- [x] No `DELETE FROM image_hashes` (only 2 `status` UPDATEs for newly verified Arte URLs)
+- [x] No vendor rate-limit hammering (9 Arte requests at 1/sec, 10 Romo HEAD samples)
+- [x] Total runtime under the 15-min-per-vendor budget for all 4 vendors

← e085a06 report: dw-stale-urls push-A2 (470 products healed on storef  ·  back to Wallco Ai  ·  aesthetic purge: add scripts/purge-neon-and-multicolor.js (n 1db9580 →