← back to Ventura Corridor
iter 141: category emoji map on /scoreboard — 36 verticals mapped, fallback ✦
6ffa8b06a8b7e3dced2d1d0586e9756b493c9fab · 2026-05-06 19:04:43 -0700 · SteveStudio2
Files touched
Diff
commit 6ffa8b06a8b7e3dced2d1d0586e9756b493c9fab
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Wed May 6 19:04:43 2026 -0700
iter 141: category emoji map on /scoreboard — 36 verticals mapped, fallback ✦
---
public/scoreboard.html | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/public/scoreboard.html b/public/scoreboard.html
index 88e4bf0..c1a88be 100644
--- a/public/scoreboard.html
+++ b/public/scoreboard.html
@@ -69,6 +69,18 @@ main{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:2
<script>
function escHtml(s) { return String(s ?? '').replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c])); }
+const CATEGORY_EMOJI = {
+ restaurant: '🍴', food: '🍴', cafe: '☕', bar: '🍷', bakery: '🥐',
+ professional: '⚖️', legal: '⚖️', accounting: '📒', insurance: '📑', 'real-estate': '🏠',
+ medical: '🩺', dental: '🦷', wellness: '🌿', therapy: '🧘',
+ beauty: '✨', salon: '💇', barbershop: '💈', spa: '🛁', nails: '💅',
+ fitness: '💪', yoga: '🧘♀️', studio: '🎬',
+ shop: '🛍', boutique: '👗', jewelry: '💍', florist: '💐', furniture: '🛋', hardware: '🔧',
+ hospitality: '🏨', hotel: '🏨', event: '🎉',
+ pet: '🐶', auto: '🚗', cleaning: '🧼', creative: '🎨', music: '🎵',
+ feature: '✦', uncategorized: '✦', misc: '✦',
+};
+function emojiForCat(c) { return CATEGORY_EMOJI[String(c || '').toLowerCase()] || '✦'; }
async function load() {
const d = await fetch('/api/magazine/scoreboard').then(r => r.json());
const boards = [
@@ -78,7 +90,7 @@ async function load() {
},
{
title: 'Hottest verticals', deck: 'feature counts by category', rows: d.hot_verticals,
- render: r => `<span style="text-transform:capitalize">${escHtml((r.category_tag || 'uncategorized').replace(/-/g, ' '))}</span><span></span><span class="v">${r.n}</span>`
+ render: r => `<span><span style="margin-right:8px;font-size:16px">${emojiForCat(r.category_tag)}</span><span style="text-transform:capitalize">${escHtml((r.category_tag || 'uncategorized').replace(/-/g, ' '))}</span></span><span></span><span class="v">${r.n}</span>`
},
{
title: 'Sponsor candidates', deck: 'paid-ad runners worth pitching', rows: d.sponsor_candidates,
@@ -93,7 +105,7 @@ async function load() {
},
{
title: 'Latest features', deck: 'fresh off the press', rows: d.latest,
- render: r => `<a href="/magazine/${r.id}">${escHtml(r.headline || r.biz_name)}</a><span class="name">${escHtml((r.category_tag || '').replace(/-/g,' '))}</span><span class="v">${new Date(r.generated_at).toLocaleDateString('en-US',{month:'short',day:'numeric'})}</span>`
+ render: r => `<a href="/magazine/${r.id}">${escHtml(r.headline || r.biz_name)}</a><span class="name">${emojiForCat(r.category_tag)} ${escHtml((r.category_tag || '').replace(/-/g,' '))}</span><span class="v">${new Date(r.generated_at).toLocaleDateString('en-US',{month:'short',day:'numeric'})}</span>`
},
{
title: 'Longest editorial', deck: 'qwen3 ran with the prompt', rows: d.longest_editorial,
← 548f05d iter 140: daily-standup audio summary — Samantha TTS + m4a +
·
back to Ventura Corridor
·
iter 143: feedback POST → George email Steve on typo/correct d1f4883 →