| Item Code | Description | Program | BOM Code | Item | Vendor | $/Unit | $/Case | Source ↗ | Updated | Expires | Days Until |
|---|
python3 scripts/system_health_check.py — outputs a markdown report at mnt/outputs/HEALTH_CHECK_<date>.md and updates health.json for this dashboard.
| ID | Section | Item | Status | Action |
|---|
What this dashboard is: the working space for GFS finished-goods cost tracking — vendor inputs, BOM line items, FOB dock costs, and ongoing reviews. NetSuite is the live/selling system; this is where the team works on cost models, vendor changes, and item reviews before they go live.
📍 Sidebar Navigation
- Action Center — landing page · expiring prices · stale quotes · vendor concentration · expiry timeline · price freshness
- Items — master list (left) + full item card (right) · click any item to open
- Database — every BOM line × every item, flattened · search + filter + CSV export
- Vendors — alphabetical list with Internal/External tags · click into Vendor Detail with Profile + Contact + Pricing Tiers + Documents + Activity
- Activity — running log of notes, sign-offs, item changelogs across all 146 items
- Open Items — live AUDIT tracker (placeholder rates, missing pricing, methodology decisions)
- System Health (admin) — full health audit + NetSuite Reconciliation panel
- Chat with Claude — AI assistant with full dataset context
▤ Item Card · 3 view modes
Top of every item: Cost Master Analysis toggle.
- Cost — sales-ready FOB summary · big readable numbers · $/case + $/unit + FOB location · NetSuite link
- Master — Cost Composition Summary · BOM rolled into 6 buckets (Components / Packaging / Labor / Plant Overhead / Production Overhead / Inbound Freight) · top vendors · line count
- Analysis — full deep dive · BOM table with Code/Item/$/Case/$/Unit/Source/Updated/Expires/Days Until · packaging sub-breakdown · notes (KV-backed) · sign-off history · outstanding questions · change log
Selection persists per-browser. ↑ ↓ arrow keys move through items list when on Items tab. Esc deselects. URL hash #/items/CODE deep-links to a specific item.
🟢 Live in NetSuite vs 🟡 Workspace only
- The orange NetSuite ● bubble means the item is mapped to a NetSuite SKU (ID shown). Click → opens the NS record in a new tab.
- The amber Workspace only bubble means the item lives only in this dashboard — could be R&D, draft, variant, or a new product not yet promoted to NS.
- Same logic for vendors. Internal vs External tags are shown alphabetically in the Vendors list.
📅 Per-line source · updated · expires
Every BOM line carries: a clickable Source (opens the original quote/spec PDF/XLSX), the Updated date (when price was last set), Expires date, and Days Until. Color-coded:
- Green — > 60 days until expiry
- Amber — ≤ 60 days · renewal coming
- Red bold — EXPIRED · with day count
- Gray italic — methodology line · no expiry
📝 Notes + Sign-off (KV-backed)
Set your name once in Settings (⚙ icon). Then on any item or vendor page, add notes (multi-user, persisted on Cloudflare KV) or sign off (records reviewer + comment + timestamp). Activity tab shows everything chronologically.
💬 Chat with Claude
Full dataset cached as system prompt — Claude has visibility into all 146 items, BOM-line source attribution, vendors, methodology, and open items. Ask things like:
- "Top 5 most expensive PUB kits"
- "Which BOM lines expire in 60 days?"
- "If Damascus raises ciabatta 8%, what's the per-case impact?"
- "Which items have stale pricing >1 year old?"
- "Compare MJM-locked PUBs vs Keebler equivalents — show cost delta"
🔄 Refresh pipeline (admin)
python3 scripts/generate_meal_kit_items.py python3 scripts/generate_inferred_meal_kits.py python3 scripts/enrich_item_sources.py python3 scripts/fetch_website_mappings.py # photos + product URLs python3 scripts/extract_pricing_tiers.py # vendor price tier matrices python3 scripts/resolve_netsuite_ids.py # NetSuite ID mapping python3 scripts/netsuite_gap_report.py # bidirectional reconciliation python3 scripts/system_health_check.py # health audit python3 scripts/generate_fob_rollup.py python3 scripts/generate_cloudflare_dashboard.py # rebuild this dashboard cd cloudflare-deploy && npm run deploy
📥 Future enhancements (planned)
- Pull richer NetSuite vendor data — primary contact, email, phone, address, terms (Net 30 etc), tax ID, balance, last PO date, comments — when MCP tools come back online
- Pull richer NetSuite item data — base price, last purchase price, average cost, quantity on hand, preferred vendor, weight, item type
- Per-line price tier expand on item BOM (when line maps to a known vendor item, click to see all bracket tiers)
- Customer pricing / margin overlay — "What's the margin if we sell at $X?"
- Daily email/Slack digest of expiring prices
- Bulk operations (raise all Damascus prices 5%)
- PWA / offline support
🔑 Quick reference — color & icon legend
| Element | Meaning |
|---|---|
| Confirmed | Confirmed status · all required pricing on file |
| Placeholder / TBD | Pricing or methodology is a placeholder · needs verification |
| Inferred | Item BOM was inferred from sister SKU · needs ops verification |
| Internal | Internal vendor (GFS-internal sourcing / methodology lines) |
| External | External third-party supplier |
| MJM-LOCKED | This item must use MJM grahams per customer spec — DO NOT switch to Keebler |
| NetSuite | Live in NetSuite · click to open NS record |
| Workspace only | Workspace-only · not yet in NetSuite |