← back to Ventura Claw Leads
lib/verticals.js
27 lines
// Single source of truth for the 8-vertical green list. Used by route filters,
// view labels, seed data, and the vertical CHECK constraint in 001_init.sql.
//
// HARD RULE — adding a vertical requires:
// 1. New entry here
// 2. New migration amending the businesses.vertical CHECK constraint
// 3. Code review confirming the new vertical does NOT trigger state-board
// referral-fee restrictions (medical/legal/financial/real-estate/contracting).
const VERTICALS = [
{ key: 'food', label: 'Food & drink', blurb: 'Restaurants, cafes, bakeries, delis, food trucks', icon: '🍽' },
{ key: 'beauty', label: 'Beauty', blurb: 'Hair, nails, brows, lashes, barbers, makeup, non-medical spa', icon: '✨' },
{ key: 'retail', label: 'Retail', blurb: 'Boutiques, jewelry, shoes, accessories, home goods, gifts', icon: '🛍' },
{ key: 'fitness', label: 'Fitness', blurb: 'Yoga, pilates, gyms, dance, martial arts, personal trainers', icon: '🧘' },
{ key: 'pet_services', label: 'Pet services', blurb: 'Groomers, walkers, daycare, sitters, training', icon: '🐾' },
{ key: 'auto_detail', label: 'Auto detail', blurb: 'Detailing, hand car wash, window tint — non-mechanical', icon: '🚗' },
{ key: 'cleaning', label: 'Cleaning', blurb: 'House cleaners, organizers, residential moving, staging', icon: '🧹' },
{ key: 'creative', label: 'Creative', blurb: 'Photographers, DJs, event planners, florists, designers', icon: '🎨' }
];
const BY_KEY = Object.fromEntries(VERTICALS.map(v => [v.key, v]));
function label(key) { return BY_KEY[key]?.label || key; }
function icon(key) { return BY_KEY[key]?.icon || '•'; }
module.exports = { VERTICALS, BY_KEY, label, icon };