SPARKHQ
EXECUTIVE FUNCTION HEADQUARTERS
FOCUS. FUNCTION. FOLLOW THROUGH.
SPARKHQ
Command Center
Signal aggregated across every domain.
Coming soon
Fitness Track
Training, nutrition, recovery.
Live
Finance Desk
Net worth, budget, career runway.
Live · sign in
Internal Affairs
Therapy, DBT, mindfulness.
Coming soon
Career Runway
Exit timeline, comp moves.
Coming soon
Skill Zone
Time-based skill logging.
Coming soon
SPARKHQ ← Back to HQ
Fitness Track
Good morning, Captain
Saturday, 28 Jun · Week 2 of re-entry
Re-entry · light phase
Spark HQ · Build Tracker 5 of 7 complete
Step 1 · Define what you want to see complete
Step 2 · Design the dashboard visually complete
Step 3 · Define the data model complete
5-table Supabase schema defined
Storage format confirmed: Supabase / PostgreSQL
Relationships mapped
Step 4 · Import historical data complete
Jan–Oct 2025 workout logs extracted: 6,221 exercise records
Weight log imported: 21 entries, Oct 2023–Jun 2026
Apple Health data imported: 710 sessions, 177 weeks, steps + HR
Historical JSON structured and validated
Step 5 · Build the logging interface complete
Session log: timer, exercises, confirm/skip/swap
Next-incomplete session model wired
Freestyle logging: Option C container + Option B exercise rows
117-exercise substitute library mapped by muscle group
Travel / deload mode with hotel gym auto-population
Weekly check-in: weight + sleep
Nutrition Y/N log with deviation form
Session notes free text field
End session blocked until all exercises confirmed or skipped
Reminder banners: 8PM meal prompt, Saturday weigh-in
Brand system applied: Space Grotesk + Geist, light silver base
6
Step 6 · Wire to Supabase (live data) active next
Create Supabase project (Google login)
Core tables created: weekly_log, sessions, exercises, recipe_library, shopping_staples, weekly_meal_plan
Run one-time historical data import script — was marked complete but wasn't: confirmed 2026-07-12 via direct SQL that BOTH exercises and sessions are completely empty (0 rows each). The 2025 extraction/JSON prep may have happened, but none of it ever actually loaded into Supabase. Every card reading from these two tables (Key Lifts, Strength Arc, 1RM Tracker list, Muscle Group Frequency, Total Steps/Burn/Intensity, Week at a Glance) is correctly showing zero/empty states — that's the live wiring working as designed against a genuinely empty backing table, not a new bug. Real content only appears once this import actually runs, or once enough is logged from re-entry forward
Wire Daily Brief · Today's Session + Weight Zone (live)
Wire Daily Brief · Avg Burn This Week (missed in original 5-card scoping, caught in review — real data via sessions table, same source as Command Center's week burn stat)
Wire Daily Brief · Avg Steps This Week (real data via wearable_daily, once CSV ingestion existed — renamed from "Steps Today" since wearable data always lands a day lagged, never same-day)
Wire Daily Brief · Calories In Today (unblocked once meal_log existed — real kcal/protein/carbs/fat summed from today's logged meals, was a static 2,150/182g/155g/62g placeholder)
Wire Daily Brief · Intensity Trend (7-day rolling aggregate, honest zero-data state)
Wire Command Center · Total Steps (weekly sum, matches Total Burn's sum-style stat — distinct from Daily Brief's weekly average)
Wire Command Center · Vitals This Week (avg heart rate, resting HR, HRV, avg active energy — sourced from wearable_daily, previously imported but never surfaced anywhere)
Wire Nutrition tab weekly summary (kcal/protein/carbs/fat) to weekly_log; removed fabricated daily bar chart (no daily-granularity source exists)
Rating icons matched to session log convention (⚡ performance · ★ quality · 🔥 intensity)
Wire weekly summary and monthly trends — Weight Arc (weekly_log.bodyweight_kg, last 4 entries), Key Lifts (live 2026 e1RM for 4 programmed lifts), Muscle Group Frequency (this week vs 8-week avg, classified off exercises.muscle_groups), and Strength Arc (real per-exercise 1RM trend bars) all rewired off real data — were all still static hardcoded HTML despite Muscle Group Frequency appearing live in an earlier review. Next Cycle Recommendation intentionally left as an honest "not built yet" placeholder — trend-flagging logic deferred to post-Netlify by direct instruction
Wire session log saves to Supabase on end session
Wire meal plan saves + recipe library writes to Supabase
Wire weekly check-in saves (weight, sleep)
Split sleep off weekly_log into dated sleep_log table (was overwriting within the week, no per-night record) — run create_sleep_log.sql before deploying
Week at a Glance wired live: real dates, per-day states (completed/today/note/blank), editable detail modal
Manual-vs-wearable data separated: source column on sessions, calorie stats scoped correctly
Retroactive/backdated session logging built
Build daily nutrition logging — new meal_log table, Y/N + deviation form now actually persists to Supabase (was UI-only button state before); Nutrition · Weekly Averages (kcal in, net, protein) rewired off meal_log since weekly_log's nutrition fields have no write path and are always null
Build wearable CSV upload (Apple Watch via Health Auto Export app, daily 5AM automation → iCloud "Spark HQ Imports" folder → symlinked into ~/spark-hq → manual upload through dashboard Log tab)
Deploy to live URL (Netlify or Vercel, free tier)
Wire spinal constraint flags to exercise library — spinal_risk_tier populated in Supabase (46 hard, 11 caution, run via update_spinal_risk_tier.sql); flags now also surfaced directly on the exercise-log-card itself, not just inside the Swap panel
Build 1RM tracker: live est. 1RM (Epley) on the exercise log card as weight/reps change, new "1RM Tracker" tab grouped by body region → muscle group → exercise, trend popup showing last 10 logged instances
7
Step 7 · Stress-test + brand final + sign-off upcoming
Simulate travel week: hotel gym mode tested
Simulate low-sleep day: logging still under 60s
Simulate high-workload week: gap handled gracefully
Apply finalized personal brand skin
Spark HQ shell built: 5 domain tiles, static frame
Data integrity confirmed after logging gap
Build wearable Shortcuts → direct Supabase REST API POST (true zero-touch automation, skips the manual CSV upload tap entirely — deferred by choice, Captain Spark wants the manual route proven first)
Sign-off: Fitness Desk is live
Open questions · pending resolution
Spark HQ top-level naming: HQ confirmed, domain-level term still open (Desk leading)
Health data sync: Option A (manual CSV, Health Auto Export daily 5AM automation) active now. Option B (direct Shortcuts→Supabase automation) deferred to Step 7, by choice.
Wellbeing Desk: separate domain, not a Fitness subfeature. Therapist read-only view is a Wellbeing Desk architecture decision. Long-term build.
Spark trademark: check UAE + US registers before public use. Word alone not protectable -- brand system is the moat.
Session model: next-incomplete confirmed (not day-locked)
Freestyle logging: Option C container + Option B inside confirmed
Violet removed from system: replaced with forest-mid
Protein shakes excluded from meal templates
Typography: Space Grotesk 600-700 headlines, Geist 400-500 body/UI
Wearable decision: staying on Apple Watch, not switching to Garmin/Whoop — decided 2026-07-11
Session Ratings · This Week
/ 5 avg
no data
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Performance
Quality
🔥
Intensity
Avg Burn · This Week
kcal
not logged yet
0% of weekly target
Weight Zone
kg
8588 9193
Avg Steps · This Week
not logged yet
Calories In Today
protein
carbs
fat
Today's Session
Loading…
📅Sessions
🔥Total burn
Avg intensity
👟Total steps
not logged
❤️Avg heart rate
not logged
💤Resting HR
not logged
📈HRV
not logged
Avg active energy
not logged
Loading…
Loading…
🍴Avg kcal in
2,180
⚖️Net avg
1,568
🥩Protein avg
185g
🍽️Most eaten meal · YTD
Not tracked (yet)
Loading…
Strength Arc · Last 8 Weeks
Loading…
Next Cycle · Recommendation
Recommendation engine not built yet — trend-flagging logic is planned for after the Netlify deploy.
2 sessions logged · 3 more needed this week
Weight Zone: green · no action needed
Weekly burn at 51% of target · 3 sessions remaining
Weekly Nutrition Summary
Avg kcal in
target 2,200
Avg protein
target 175g+
Avg carbs
Avg fat
Daily Intake This Week
Not tracked at daily granularity yet — only the weekly average above is logged, via Saturday check-in.
Meal Templates · Active Rotation
Not assigned this week
Not assigned this week
Not assigned this week
Not assigned this week
Set this week's rotation
Add a new recipe
Correlations · Early Signals
Patterns will surface after 6–8 weeks of logged data. Current state:
Avg protein this week 182g · on target
Low calorie days vs session quality insufficient data
Heavy week nutrition readiness insufficient data
Heavy week meal plan recommendation will activate once 6 weeks of data exists. Current phase: light — standard rotation is sufficient.
← Back to dashboard
Check-in
loading…
loading…
Import Wearable Data
Weekly CSV export from the Shortcut — steps, calories, heart rate, HRV. One row per day; re-uploading a date overwrites it, so overlapping weeks are safe.
What Did You Eat Today?
Did you follow the plan?
Followed today's plan
4 eggs + oatmeal, 4 eggs + oatmeal, chicken rice bowl, salmon + veg
Which meal changed?
Breakfast
Lunch
Dinner
Snack
Plan total: ~1,790 kcal · ~128g protein
Full Body · Re-entry
Light · 3 sets × 10 reps · est. 35 min
Legs Chest Back Shoulders Core
Today's Session is loaded and ready.
6 exercises + optional bike · est. 35 min
Timestamp begins on tap
Estimated 1-rep max per exercise (Epley formula), from every logged set. Tap an exercise to see how it's trended over your last 10 times doing it.
Loading…