[object Object]

← back to Corkwallcovering

corkwallcovering: drop non-cork vinyls that leaked via natural/sustainable tags (title-competitor guard) — cycle 2

86db4114b852744ff848da42f21cdddc2e69a746 · 2026-08-12 10:23:38 -0700 · steve

Files touched

Diff

commit 86db4114b852744ff848da42f21cdddc2e69a746
Author: steve <steve@designerwallcoverings.com>
Date:   Wed Aug 12 10:23:38 2026 -0700

    corkwallcovering: drop non-cork vinyls that leaked via natural/sustainable tags (title-competitor guard) — cycle 2
---
 server.js | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/server.js b/server.js
index 1b1af8f..6f03c3e 100644
--- a/server.js
+++ b/server.js
@@ -88,9 +88,17 @@ let DROPPED = 0;
 // graphics-loop pass 12: niche keyword filter — only show products that fit this site's niche
 const NICHE_POS = ["cork","bark","sustainable","natural"];
 const NICHE_NEG = ["solid","blank","plain","mica","silk","grasscloth","grass cloth","sisal","seagrass","jute","raffia","linen","flax","mylar","suede","leather","hemp","abaca"]; // +competing-fiber exclusions (Steve fleet fix 2026-08-12: 'it is not {niche}')
+// Titles that name a NON-cork material leak in via cork's broad "natural"/"sustainable"
+// POS tags (yoloforever cycle 2: 3 "Durable Vinyl" products showed on a CORK site). We
+// can't blunt-NEG "vinyl" — 37 legit cork products (Oxel Cork, Cambium Faux Cork, prints
+// ON cork) carry a vinyl backing TAG. So reject only when the TITLE names another material
+// AND the title doesn't also say cork/bark.
+const TITLE_COMPETITORS = ["vinyl","grasscloth","grass cloth","sisal","seagrass","mylar","silk","linen","suede","bamboo","paper weave","paperweave"];
 function nicheFit(p) {
   const blob = ((p.title || '') + ' ' + (p.tags || []).join(' ')).toLowerCase();
   if (NICHE_NEG.some(n => blob.includes(n.toLowerCase()))) return false;
+  const title = (p.title || '').toLowerCase();
+  if (TITLE_COMPETITORS.some(m => title.includes(m)) && !/cork|bark/.test(title)) return false;
   return NICHE_POS.length === 0 || NICHE_POS.some(k => blob.includes(k.toLowerCase()));
 }
 // Niche-filtered list, populated at startup alongside PRODUCTS.

← 9a5349a corkwallcovering: tighten niche filter — exclude competing-f  ·  back to Corkwallcovering  ·  chore: version bump v0.2.1 (session close — niche-filter fix 7974e72 →