GFS Platform

Gaps to close

Open items, all tiers. Source: GAPS_TO_CLOSE.md.

Source: GAPS_TO_CLOSE.md. This HTML is generated from the markdown — edit the .md and re-run python3 assets/build_pages.py to refresh.

GFS Platform — All Gaps to Close

Generated: May 19, 2026

Source: Full session audit — 15+ agents, 3 C-suite reviews, 6 cross-reference audits


TIER 1 — CRITICAL (do immediately)

Security & Access

  • CF Access (Zero Trust) on gfs-system-guide.pages.dev — revenue, customer names, employee org chart, financial data all publicly accessible. One command to add email OTP.
  • 48 public Suitelets — internal ops portal, all 8 broker portals, daily sales dashboard, all 7 product programs accessible without NS login (isonline=T, allroles=T). Audit each, restrict internal ones immediately.
  • Echo Lake vendor portal — public, exposes vendor data. Disable or add auth.

Data Protection

  • git init on gfs-platform — no version control exists. One accidental delete loses everything: 1,897-line guide, 17 reference docs, Worker code, schema, 45 SQL loaders.
  • D1 backup script — no export scheduled. SQL loaders can rebuild from initial load but any data added since (entity backfill, GL accounts, 2 vb_lines) would be lost.

Accounting

  • Close accounting periods — ALL 153 periods open since Jan 2018. Anyone can post to any prior period. Close through Dec 2025 minimum. Takes 30 min in NS.

TIER 2 — HIGH (do this week)

Infrastructure

  • Full Disk Access for Terminal.app — macOS Sequoia com.apple.provenance blocks sync.sh via launchd. System Settings → Privacy & Security → Full Disk Access → add Terminal.app.
  • Test custom domain from phone — api.ai-globalfoodsolutions.co fails locally (firewall/VPN) but TCP connects. SSL may already work from other networks.
  • Move sync off localhost — Chartstone on a single Mac is the #1 SPOF. Build Worker cron to call SuiteAPI #2948 directly. Eliminates laptop dependency.
  • Wrangler update — 4.90.1 installed, 4.93.0 available. npm update wrangler

Data Quality (F-grade items)

  • Vendor payment terms — 93% missing (451 of 484). AP aging completely unreliable. Owner: Amanda S. Bulk CSV import or Map/Reduce.
  • Vendor emails — 70% missing (341). Can't send PO confirmations. Owner: James M.
  • Item GTIN/UPC — 78% missing (765 items). Can't print barcodes. Owner: Elena M.
  • Item case weight — 71% missing (694). BOL weight calculations fail. Owner: Sal B.
  • Item storage temp — 75% missing. Cold chain documentation gap. Owner: Elena M.

Security Findings (NS side — 10 open)

  • NS1 — 48 public Suitelets (see Tier 1)
  • NS3 — SuiteAPI #2948 runs as Administrator. Create restricted role. 1 hr.
  • NS4 — Toolkit #2949 full CRUD as Admin. Restrict permissions. 30 min.
  • NS5 — Mike Bot uses personal Gmail + full Admin role. Switch to corporate email + limited role. 30 min.
  • NS6 — Accounting periods (see Tier 1)
  • NS7 — Echo Lake fraud reversals + public portal. Disable portal, close fraud periods. 1 hr.
  • NS8 — 5 scripts in TESTING mode in production. Release or remove. 30 min.
  • NS9 — 24 unused international scripts (SII, Intrastat) adding overhead to every transaction. Deactivate. 1 hr.
  • NS10 — Single admin concentration (23 roles on Michael Levine). Need second admin. 1 hr.

TIER 3 — MEDIUM (do this month)

Operational Fixes

  • Zapier WO automation dead — 0 WOs created in 2026. 179 items negative inventory. $4.3M in worksheets as workaround. Either repair Zapier or build WO creation into CF platform.
  • Dual dunning system — both day-based (3/7/14/30/60) and level-based (L1/L2/L3) templates active simultaneously. Risk of double-dunning. Deactivate one system.
  • 9 Power Up meal kits negative inventory — assembly builds not recorded. Richard G. to investigate.
  • 11 customers expired pricing — some 4+ years expired (Pittsburgh Public Schools since 1/25/2022). Review and update or inactivate.

Template Bugs (3 in production)

  • Vendor Bill (id 117) — prints "TESTBill" on every vendor bill. Fix: find TEST${record@title} → change to ${record@title}.
  • GL Export (id 118) — prints "TESTING". Fix: find ${record@title}TESTING → remove TESTING.
  • GL Impact (id 119) — contains BOL code instead of GL content. Compare with standard (id 45), fix or inactivate.

Data Quality (remaining items)

  • Item kosher status — 98% missing. Certification missing from labels. Owner: Elena M. Q4 2026.
  • Item shelf life — 70% missing. WO product dating incorrect. Owner: Elena M. Q4 2026.
  • Item country of origin — 70% missing. BOL compliance risk. Owner: Elena M. Q4 2026.
  • Customer emails — 12% missing (33). Can't receive confirmations/dunning. Owner: Danielle S.
  • Customer payment terms — 10% missing (28). AR aging incorrect. Owner: Amanda S.
  • Employee data — 45% populated. ~50+ missing email, ~60+ missing title. Grade: D.

Security Findings (CF side — 4 open)

  • C4 — Sensitive data (PII, financials, vendor tax IDs) unfiltered on API responses. Filter after auth is in place.
  • H1 — No rate limiting on API. Add after auth.
  • H4 — No logging/monitoring. Add request logging to Worker.
  • H5 — Chartstone token residual in CLAUDE.md. Move to env var only.

Architecture (6 open)

  • M1 — No tests. Zero test files, no framework.
  • M2 — No CI/CD pipeline. Manual wrangler deploy only.
  • M3 — Sync handler stub. handleSync() only writes sync_log. handleDailyReport() only console.logs.
  • M4 — No TypeScript type safety. data: any, no interfaces.
  • M5 — D1 schema missing constraints. No UNIQUE on tranid, no CHECK, no FK enforcement.
  • L2 — No API versioning (/v1/ prefix).

TIER 4 — IMPROVEMENT (ongoing)

Guide Enhancements

  • Section reorder refinement — health/risk moved up but some sections still scattered. Full reorder in next session.
  • Executive summary page — board-ready, built but could be enhanced with live data.
  • Mobile hamburger nav — built but needs testing on actual phone.
  • Search match highlighting — built but may need performance optimization on large page.

System Monitoring

  • Uptime monitoring — Worker cron that checks /api/health and emails on failure.
  • Sync monitoring — alert if sync_log shows failures or gaps > 1 hour.
  • D1 capacity tracking — 28.3 MB of 10 GB (0.3% used). Log growth monthly.

Documentation Gaps (5 items need manual NS access)

  • Custom list dropdown values — 129 lists identified, values not queryable via SuiteQL. Need NS screenshots.
  • Role permission matrices — permission_count=0 in all exports. Need NS role record inspection.
  • Custom transaction form layouts — which fields on which form. Need NS form editor access.
  • Dashboard/portlet config per role — need NS dashboard screenshots per role.
  • Field show/hide dependencies — need NS form editor or script analysis.

Saved Search Cleanup

  • ~300 TAF/SII/Intrastat searches — from unused international bundles. Candidates for deactivation.
  • ~20 Zapier/Airtable searches — integration dead, searches orphaned.
  • Duplicate searches — multiple versions of same SO/WO searches from iterative development.

Bundle Cleanup

  • 6 unused bundles — SII (Spain), Intrastat (EU), Norway SAF-T, UAE Emirate, France Tax, UK/AU Payments. All international tax for a US-only company.
  • Celigo/Zapier remnants — tokens revoked but bot accounts, workflows, searches still exist.

Long-Term Platform

  • Workers AI integration — NL → D1 queries (Phase 4 in blueprint)
  • GFS Hub Suitelet — SuiteFrame, Center Tab (Sprint 3-4 in blueprint)
  • 6 Suitelet views — CME, AR, Chat, Rebate, Products, C360
  • 5 MCP Custom Tools — AR, prices, sales, rebate, query
  • SuiteFlow workflows — PO approval, SO notifications, welcome emails
  • 8 saved search email alerts — overdue AR, PO pending, contracts, inventory
  • USDA price feed — Worker cron fetching barrel/block from LMPRS API
  • Anomaly detection — nightly z-score analysis on vendor bills, customer volume drops

SUMMARY

Tier Items Estimated Effort
CRITICAL 6 2-3 hours
HIGH 15 8-10 hours
MEDIUM 18 15-20 hours
IMPROVEMENT 20+ Ongoing
TOTAL 59+

Top 5 — Do First

  1. git init on gfs-platform (5 min — protects everything)
  2. CF Access on Pages (10 min — protects all sensitive data)
  3. Close accounting periods through Dec 2025 (30 min in NS)
  4. Full Disk Access for Terminal (2 min in System Settings)
  5. Fix 3 template bugs (15 min each in NS)

Dashboard cleanup — merged from AUDIT_FIXES.md (2026-05-19)

Original audit of dashboard/index.html (now in archive/2026-05/dashboard-original.html). The file has been replaced by /admin-dashboard.html; these items apply to the new dashboard.

Critical

  • Missing </html> closing tag — apply to the new /admin-dashboard.html
  • No empty state for data tables — when an API returns 0 rows, show explicit "No data" row, not a blank tbody

High

  • Title and meta description: confirm new dashboard has descriptive title + meta
  • Print stylesheet: new dashboard needs print rules (was 5/10 in original audit)
  • Accessibility: ARIA labels, skip-to-content link, focus management (was 6/10)
  • Keyboard navigation: shortcuts for tab switching / refresh (was 8/10 nav)
  • Edge-case procedures (returns, deposits) — extend runbook coverage

Medium / addressed by consolidation

  • Dashboard sprawl (3 separate dashboards) — addressed by consolidating into a single /admin-dashboard.html
  • Design system fragmentation — addressed by single assets/styles.css + shared brand block
  • Duplicate KPI code across dashboards — addressed by single source of truth

Validated (carried forward)

  • Auth flow: sessionStorage for key (clears on tab close), 401 redirects to modal, key never logged — keep this pattern in the new dashboard
  • Data accuracy: 185K+ rows / 21 endpoints / 18 tables verified against source — re-verify against current Worker
  • 6 workflows, 47 checklist items, 28 procedures — preserve in /admin-dashboard.html runbook section
  • Security findings: 10 NS + 4 CF findings (matches GAPS_TO_CLOSE.md) — covered above