[object Object]

← back to Silkwallcoverings

silkwallcoverings: title-required silk filter — drop tag-only non-silk (bamboo/paper-weave) per Cody gate

d7c473c6e36a217c9eeaa9f73d964bdfd604f479 · 2026-08-12 10:08:01 -0700 · steve

Files touched

Diff

commit d7c473c6e36a217c9eeaa9f73d964bdfd604f479
Author: steve <steve@designerwallcoverings.com>
Date:   Wed Aug 12 10:08:01 2026 -0700

    silkwallcoverings: title-required silk filter — drop tag-only non-silk (bamboo/paper-weave) per Cody gate
---
 server.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/server.js b/server.js
index 6280b5f..38c230b 100644
--- a/server.js
+++ b/server.js
@@ -44,7 +44,11 @@ const NICHE_NEG = ["solid","blank","plain","grasscloth","grass cloth","sisal","s
 function nicheFit(p) {
   const blob = ((p.title || '') + ' ' + (p.tags || []).join(' ')).toLowerCase();
   if (NICHE_NEG.some(n => blob.includes(n))) return false;
-  return NICHE_POS.some(k => blob.includes(k));
+  // Title-required (matches linenwallpaper): the silk signal must be in the product's
+  // own NAME, not just a stray tag — a "silk" TAG on a bamboo/paper-weave/mural product
+  // otherwise leaks a non-silk item onto a SILK site (Cody gate, verified 2026-08-12).
+  const title = (p.title || '').toLowerCase();
+  return NICHE_POS.some(k => title.includes(k));
 }
 
 // Catalog now lives in dw_unified.microsite_products — populated async at

← a1732f2 silkwallcoverings: add silk niche filter — drop non-silk fib  ·  back to Silkwallcoverings  ·  chore: version bump v0.1.2 (session close — niche-filter fix ef5f85e →