[object Object]

← back to Suedewallpaper

suedewallpaper: title-competitor guard — drop non-niche junk (pine/marble/screen-print/beadazzled) surfaced by Cody gate (cycle 2)

8c5f1378ad808fb6341222a7a43bab028d2c087b · 2026-08-12 10:29:52 -0700 · steve

Files touched

Diff

commit 8c5f1378ad808fb6341222a7a43bab028d2c087b
Author: steve <steve@designerwallcoverings.com>
Date:   Wed Aug 12 10:29:52 2026 -0700

    suedewallpaper: title-competitor guard — drop non-niche junk (pine/marble/screen-print/beadazzled) surfaced by Cody gate (cycle 2)
---
 server.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/server.js b/server.js
index 4c6d7fa..fc14ff4 100644
--- a/server.js
+++ b/server.js
@@ -90,6 +90,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.toLowerCase()))) return false;
+  // Cycle-2 title-competitor guard (Cody gate 2026-08-12): drop products whose TITLE names a
+  // non-suede material unless the title also carries the niche signal. Title-only so a
+  // stray tag cannot over-drop legit product.
+  const __t = (p.title || '').toLowerCase();
+  if (["faux marble","marble","screen printed","beadazzled","glass bead"].some(m => __t.includes(m)) && !/suede|suedine|su\u00e9dine|velvet|leather|microfiber/.test(__t)) return false;
   return NICHE_POS.length === 0 || NICHE_POS.some(k => blob.includes(k.toLowerCase()));
 }
 // Niche-filtered view of PRODUCTS — recomputed after the async catalog load.

← c3c1b3d suedewallpaper: tighten niche filter — exclude competing-fib  ·  back to Suedewallpaper  ·  chore: version bump v0.1.1 (session close — niche-filter fix 65dfa11 →