← 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');