Mark's Live Dashboard — Design Spec

Design brief for the interactive real-time dashboard. Built for Claude design tools (Claude Artifacts, v0, etc.) to flesh out visually. All data sources documented. Architecture proven on calendar card.

1. What problem this solves

Mark's #1 trust signal is seeing the neural stack grow. Right now he gets Notify alerts (numbers, not visual) and a static HTML page that only updates when a deploy runs. He can't tell at a glance whether the system is alive, whether OMI is feeding data, or whether ingestion actually happened today. The live dashboard solves all of this.

TP2 had a dashboard concept that never shipped. TP3 has the data. The Cloudflare KV + Worker pattern (already proven with the calendar card) makes a live dashboard fast to build and free to run.

2. Wireframe — panel layout

↓ This is a design mockup — shows shape and data, not final visual style

TP3 Total Rows
641,208
+1,847 since yesterday
Last Ingest
4m ago
19:42 UTC — OMI webhook
● HEALTHY
Today's Rows
+312
Avg: 1,240/day (7d)
OMI Memories
1,521
+13 today

Ingestion Stream — last 24h LIVE

📈 Bar chart: rows ingested per hour, color-coded by source (OMI / Bidet / Manual)
OMI
Conversation: "school contract + classroom bidet"+234m ago
OMI
Day Summary ingested+11h ago
Bidet
Voice dump: "OMI + dashboard design"+472h ago
OMI
Real-time transcript chunk+83h ago

Stack Health LIVE

tp3_postgresUP
tp3_ingestUP
tp3_bidetUP
tp3_embedUP
tp3_omi_mcpUP
Ollama (gemma3:12b)LOADED
Cloudflare TunnelUP
OMI Webhook24m stale

Health Data SOON

❤️ Heart rate trend (last 7d) from Health Connect CSVs in Drive

Steps · Sleep · Energy burned · O₂ sat · Source: Google Drive Health Connect exports

What's Coming Up

Today6th period — Content Creator Club
TueSt. Francis — normal schedule
Jun 1–5DC Adventure trip

Live from Cloudflare KV — refreshed daily at 6:30 AM by Apps Script

OMI Activity LIVE

Today's conversations
14
Top tags: AI, education, automation
🕐 Hourly OMI conversation timeline

3. Data sources — complete map

PanelData SourceHow to get itFreshness
TP3 row count Postgres tp3_metadata SSH → SELECT COUNT(*), MAX(ingest_time) FROM tp3_metadata via scheduled Apex script → push to KV Every 15 min
Daily delta Same table, date filter WHERE ingest_time > now()-'1 day' Every 15 min
Last ingest time MAX(ingest_time) Same query, derived field Every 15 min
Ingest stream (live feed) Postgres recent rows SELECT source, snippet, row_count FROM tp3_metadata ORDER BY ingest_time DESC LIMIT 10 → KV Every 5 min
Stack health Docker API / health endpoints Apex PowerShell: docker ps --format json + curl each /health → KV JSON Every 2 min
OMI memories count OMI API GET api.omi.me/v2/memories?limit=1 → total count in header → KV Every 30 min
OMI today's conversations OMI API GET api.omi.me/v1/conversations?date=today → KV Every 30 min
Health stats Google Drive Health Connect CSVs Drive MCP → read latest CSV → parse → KV Daily (when Drive syncs)
Calendar Google Calendar API Apps Script → CalendarApp → KV (already built) Daily at 6:30 AM
Ollama status Ollama API curl.exe http://localhost:11434/api/ps → KV Every 5 min

4. Technical architecture

Apex (Windows)
Docker containers + Postgres + Ollama
PowerShell collector script
Every 2–15 min, scheduled task
Cloudflare KV
JSON blobs per metric
Cloudflare Worker
reports.thebarnetts.info/live
KV reads on each request
+
JS in browser
Auto-refresh every 60s
The calendar card already proves this pattern works. The Worker reads a KV key and returns HTML. The only new piece is the Apex collector script that writes the data. The frontend auto-refresh (meta refresh or JS setInterval) makes it "live" without a WebSocket.

5. Build phases

PhaseWhat shipsEst. timeStatus
0 (done)Calendar card via KV WorkerLIVE
1TP3 row count + last ingest + stack health — 4 KPI cards + health table3–4hNEXT
2Ingestion stream feed (last 10 rows with source + snippet)2hQUEUED
3OMI activity card (daily conversation count + top tags)2hQUEUED
4Health stats graphs from Drive CSVs3hQUEUED
5Interactive query — text box → TP3 semantic search → results4–6hFUTURE

6. Notes for design tools (Claude Artifacts / v0)

Hand this document to a design tool with: "Build a dark-mode real-time personal AI dashboard based on this spec. Use the panel layout in Section 2. Data values are fake but the labels and structure are final. Make it visually impressive — gradients, animated status indicators, smooth sparklines."

Fake data is intentional for design pass. All numbers shown in the wireframe above are made up. Real values come from the Apex collector script (Phase 1 build). Tell the design tool to keep the structure but feel free to use placeholder numbers.

7. What this replaces

TP2's dashboard concept never shipped because TP2's Chroma backend couldn't serve fast queries at scale. TP3 runs Postgres — COUNT(*) on 641K rows takes under 10ms. The KV layer means the Worker never hits Postgres directly; it just reads a pre-computed blob. This is how it ships this time.