← back to Shopify Sample Shipping

refine-defacto-designers.mjs

26 lines

// READ-ONLY: refine the at-risk list into (likely designer) vs (retail-promo noise).
import fs from 'node:fs';
const data=JSON.parse(fs.readFileSync(new URL('./verification/defacto-designers.json',import.meta.url)));
const FREEMAIL=/@(gmail|yahoo|aol|icloud|me|hotmail|live|outlook|comcast|sbcglobal|att|swbell|earthlink|ymail|msn|mac)\./i;
const DESIGNKW=/design|interior|studio|architect|decor|deco|drapery|upholster|staging|homes?|interiors|atelier|workroom|contract|hospitality|group|associat/i;
const retailTag=t=>/home owner|retail|verified-sample/i.test(t);
const cats={designer:[],ambiguous:[],retailPromo:[]};
for(const r of data.atRiskZero){
  const e=r.email;
  const hasRetailTag=(r.tags||[]).some(retailTag);
  const custom=!FREEMAIL.test(e);              // custom domain = business signal
  const kw=DESIGNKW.test(e);                    // design keyword in email
  if((custom||kw)&&!hasRetailTag) cats.designer.push(r);
  else if(hasRetailTag) cats.retailPromo.push(r);
  else cats.ambiguous.push(r);                  // freemail, no design kw, no retail tag
}
const line=r=>`  ${r.email.padEnd(40)} zero-orders:${r.zeroSampleOrders} tags:[${r.tags.join(', ')||'—'}]`;
console.log(`AT-RISK comped-sample untagged: ${data.atRiskZero.length}`);
console.log(`  -> LIKELY DESIGNER (business/design email, no retail tag): ${cats.designer.length}`);
console.log(`  -> RETAIL PROMO (Home Owner / verified-sample / retail): ${cats.retailPromo.length}`);
console.log(`  -> AMBIGUOUS (freemail, no strong signal): ${cats.ambiguous.length}`);
console.log('\n=== LIKELY DESIGNERS TO PROTECT/TAG (review before tagging) ===');
for(const r of cats.designer.sort((a,b)=>b.zeroSampleOrders-a.zeroSampleOrders)) console.log(line(r));
fs.writeFileSync(new URL('./verification/defacto-designers-refined.json',import.meta.url),JSON.stringify(cats,null,2)+'\n');
console.log('\nrefined -> verification/defacto-designers-refined.json');