[object Object]

← back to Designer Wallcoverings

Scrub parent-vendor leak (Thibaut/York) from Anna French customer-facing descriptions; re-attribute to Anna French

6f6cf54e678721d473973fa3db2c7bcf1dde8498 · 2026-06-25 09:40:06 -0700 · Steve

Files touched

Diff

commit 6f6cf54e678721d473973fa3db2c7bcf1dde8498
Author: Steve <steve@designerwallcoverings.com>
Date:   Thu Jun 25 09:40:06 2026 -0700

    Scrub parent-vendor leak (Thibaut/York) from Anna French customer-facing descriptions; re-attribute to Anna French
---
 shopify/scripts/anna-french-enrich.js  |  7 ++++++-
 shopify/scripts/anna-french-scraper.js | 11 ++++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/shopify/scripts/anna-french-enrich.js b/shopify/scripts/anna-french-enrich.js
index c167af1d..f842e174 100644
--- a/shopify/scripts/anna-french-enrich.js
+++ b/shopify/scripts/anna-french-enrich.js
@@ -99,7 +99,12 @@ function normalizeList(arr, lexicon, cap = 4) {
 function titleCase(s) {
   return String(s || '').toLowerCase().split(/\s+/).filter(Boolean).map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
 }
-const cleanWallpaper = (s) => !s ? s : String(s).replace(/\bWalls Wallpaper\b/gi, 'Wallcoverings').replace(/\bWallpapers\b/gi, 'Wallcoverings').replace(/\bWallpaper\b/gi, 'Wallcovering');
+const cleanWallpaper = (s) => {
+  if (!s) return s;
+  let out = String(s).replace(/\bWalls Wallpaper\b/gi, 'Wallcoverings').replace(/\bWallpapers\b/gi, 'Wallcoverings').replace(/\bWallpaper\b/gi, 'Wallcovering');
+  out = out.replace(/\bBrowse the Thibaut[^.]*\.\s*/gi, '').replace(/\bThibaut\b/gi, 'Anna French').replace(/\bYork Wallcoverings\b/gi, 'Anna French').replace(/\bYork\b/gi, 'Anna French');
+  return out.replace(/\s+/g, ' ').trim();
+};
 
 function fetchBuffer(url) {
   return new Promise((resolve, reject) => {
diff --git a/shopify/scripts/anna-french-scraper.js b/shopify/scripts/anna-french-scraper.js
index d25f2842..3730f3b8 100644
--- a/shopify/scripts/anna-french-scraper.js
+++ b/shopify/scripts/anna-french-scraper.js
@@ -81,7 +81,16 @@ function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }
 const BANNED_WORD = /\bwallpapers?\b/gi;
 function cleanWallpaper(s) {
   if (!s) return s;
-  return String(s).replace(/\bWalls Wallpaper\b/gi, 'Wallcoverings').replace(/\bWallpapers\b/gi, 'Wallcoverings').replace(/\bWallpaper\b/gi, 'Wallcovering');
+  let out = String(s).replace(/\bWalls Wallpaper\b/gi, 'Wallcoverings').replace(/\bWallpapers\b/gi, 'Wallcoverings').replace(/\bWallpaper\b/gi, 'Wallcovering');
+  // SCRUB parent-vendor leak: Anna French is the front-facing brand, NOT Thibaut.
+  // The Thibaut meta-description ("Browse the Thibaut … assortment today") + any
+  // upstream "York" reference must NEVER surface customer-facing. Remove the boilerplate
+  // CTA sentence entirely, and re-attribute any remaining mention to Anna French.
+  out = out.replace(/\bBrowse the Thibaut[^.]*\.\s*/gi, '')
+           .replace(/\bThibaut\b/gi, 'Anna French')
+           .replace(/\bYork Wallcoverings\b/gi, 'Anna French')
+           .replace(/\bYork\b/gi, 'Anna French');
+  return out.replace(/\s+/g, ' ').trim();
 }
 function titleCase(s) {
   const small = new Set(['a', 'an', 'the', 'and', 'but', 'or', 'for', 'nor', 'in', 'on', 'at', 'to', 'by', 'of', 'with']);

← 4bfeada6 china-seas mailer: drop Material + Account nav links so head  ·  back to Designer Wallcoverings  ·  Anna French gate+diff audit artifact (734 pass, 239 disconti b4dccb49 →