← back to Whatsmystyle

scripts/sustainability.js

150 lines

/**
 * Brand sustainability tiers — hand-curated.
 *
 * Tier 1 — fast-fashion / known labor-rights or env issues
 * Tier 2 — mass-market mainstream, no published sustainability program
 * Tier 3 — published sustainability program, mixed materials, mainstream pricing
 * Tier 4 — leader in materials / supply-chain transparency, certified programs
 * Tier 5 — gold standard (B-Corp / fully circular / 100% recycled-or-organic + transparent)
 *
 * Sources used to set tiers (synthesized): Good On You, Remake, Common Objective,
 * brand-published sustainability reports.
 *
 * Note — tiers are advisory + change over time. Treat the list as a v1 baseline
 * that needs editorial review every quarter.
 */
const TIERS = {
  // ---- Tier 5 ----
  'Patagonia': 5,
  'Eileen Fisher': 5,            // actually borderline-4, but circular program is strong
  'Reformation': 5,
  'Veja': 5,
  'Stella McCartney': 5,
  'Christy Dawn': 5,
  'Pact': 5,
  'Outerknown': 5,
  // ---- Tier 4 ----
  'Everlane': 4,
  'Mara Hoffman': 4,
  'Levi\'s': 4,                  // Water<Less program; debated
  "Levi's": 4,
  'COS': 4,
  'AGOLDE': 4,
  'Citizens of Humanity': 4,
  'Allbirds': 4,
  'Tentree': 4,
  'Toteme': 4,
  // ---- Tier 3 ----
  'Madewell': 3,
  'J.Crew': 3,
  'Nike': 3,
  'Adidas': 3,
  'H&M': 3,                      // controversial — green-program exists but fast-fashion volume
  'Uniqlo': 3,
  'Anthropologie': 3,
  'Free People': 3,
  'Banana Republic': 3,
  'Saint James': 3,
  // ---- Tier 2 ----
  'Zara': 2,
  'Mango': 2,
  'Forever 21': 2,
  'Old Navy': 2,
  'Gap': 2,
  // ---- Tier 1 ----
  'SHEIN': 1,
  'Shein': 1,
  'Boohoo': 1,
  'Fashion Nova': 1,
  'Romwe': 1,
  // ---- Luxury (treat as Tier 3 by default — most luxury houses have weak transparency) ----
  'Burberry': 3,
  'Gucci': 3,
  'Prada': 3,
  'Saint Laurent': 3,
  'Bottega Veneta': 3,
  'Loro Piana': 4,               // raw-material program is genuinely strong
  'The Row': 3,
  'Khaite': 3,
  'Acne Studios': 3,
  'Lemaire': 3,
  'Maison Margiela': 3,
  'Equipment': 3,
  'Mansur Gavriel': 3,
  'Common Projects': 3,
  'Repetto': 3,
  'DVF': 3,
  'Fendi': 3,
  // ---- v12 expansion 2026-05-12 — +40 brands ----
  // Sources: Good On You public ratings, B-Corp directory, Remake brand tracker.
  // Tiers are advisory, ranked against the rubric at top of file.
  //
  // -- Tier 5 (gold-standard / B-Corp / fully circular) --
  'Mate the Label': 5,           // B-Corp; LA organic basics; 100% non-toxic dyes
  'Nudie Jeans': 5,              // free lifetime denim repair; circular program
  'Boyish Jeans': 5,             // 100% deadstock + recycled denim
  'Kotn': 5,                     // B-Corp; Egyptian-cotton coop sourcing
  'Tonle': 5,                    // zero-waste cut, fair-trade Cambodia
  // -- Tier 4 (leader in materials / supply-chain transparency) --
  'Naadam': 4,                   // direct-source Mongolian cashmere
  'Mott & Bow': 4,               // small-batch denim, 30-day fit guarantee
  'DL1961': 4,                   // closed-loop water dye process
  'Frank And Oak': 4,            // B-Corp; recycled materials line
  'Saitex / Outland Denim': 4,   // water-recovery denim mill, Australian B-Corp
  'Knickey': 4,                  // organic-cotton underwear + textile recycling
  'Boody': 4,                    // organic bamboo basics
  'Tradlands': 4,                // small woman-owned, deadstock + LA-made
  'Sezane': 4,                   // 1% for the Planet; Paris-made staples
  'Whimsy + Row': 4,             // LA deadstock + recycled fabrics
  // -- Tier 3 (published program / mainstream pricing) --
  'Theory': 3,                   // Good Wool program; LVMH portfolio
  'Vince': 3,
  'Joseph': 3,
  'Sandro': 3,
  'Maje': 3,
  'rag & bone': 3,
  'A.P.C.': 3,
  'Marine Layer': 3,             // Re-Spun cotton-recycling line; mixed overall
  'Carhartt': 3,
  'L.L.Bean': 3,
  'Frame': 3,
  'Mother': 3,                   // denim
  'Re/Done': 3,                  // reworked vintage Levi's
  'Goldsign': 3,
  'Brunello Cucinelli': 3,       // strong artisan-labor practices; weak transparency
  'Tom Ford': 3,
  'Loewe': 3,
  'Jacquemus': 3,
  // -- Tier 2 (mass-market, no published program) --
  'Express': 2,
  'Aritzia': 2,                  // some Babaton material disclosure; volume retail
  'Abercrombie & Fitch': 2,
  'Hollister': 2,
  'American Eagle': 2,
  'Aerie': 2,
  'White House Black Market': 2,
  // -- Tier 1 (fast-fashion / known labor or env issues) --
  'PrettyLittleThing': 1,
  'Cider': 1,
  'Temu': 1,                     // dropship marketplace, not a brand per se
  'Nasty Gal': 1,
};

function tierFor(brand) {
  if (!brand) return null;
  const key = brand.trim();
  if (TIERS[key]) return TIERS[key];
  // case-insensitive fallback
  const lk = key.toLowerCase();
  for (const k of Object.keys(TIERS)) if (k.toLowerCase() === lk) return TIERS[k];
  return null;
}

module.exports = { TIERS, tierFor };

if (require.main === module) {
  const arg = process.argv[2];
  if (arg) console.log(JSON.stringify({ brand: arg, tier: tierFor(arg) }, null, 2));
  else console.log(JSON.stringify({ brand_count: Object.keys(TIERS).length, sample: Object.entries(TIERS).slice(0, 6) }, null, 2));
}