Current work · In progress

Athlete readiness platform

A readiness platform for sports performance coaches and athletic trainers: sleep, load, soreness, and recovery, turned into one defensible call about who's ready today. I spent eight years being the person this product is for. This page tracks the work as it happens, decided systems first, open questions in plain sight.

Status
Early and active · design systems built,
product taking shape
Users
Performance coaches,
athletic trainers
Why me
Eight years in sports medicine,
training rooms to Division I sports science
Updated
July 2026
01 · The bet

Readiness tools are built for dashboards, not decisions

Monitoring platforms are good at collecting and terrible at deciding. A trainer opens one and gets forty charts; what they need at 6am is a short list: who's ready, who's managed, who needs eyes on them before practice. Every design decision in this product optimizes for that morning call, not for the completeness of the archive.

The systems below are decided and built. The product screens are forming on top of them, and this page will grow as they do.

02 · Decided · Typography

Kinetic: one family, two speeds

Archivo, variable width as the system's one expressive axis. Expanded and loud for states and headers, the things you read across a gym, normal width for everything you read up close. Tabular numerals everywhere a number can change, so readiness scores never jitter.

Type specimen · KineticArchivo variable · wdth 62–125
Ready to go
Display · Expanded 125
Squad Readiness
Body · Normal 100
Baseline shifted after back to back sessions. Recheck soreness before contact drills.
Data · Tabular 118
75 · 82 · 47
03 · Decided · Color

Forged Bronze: a fixed shell that takes any team

The shell is permanently dark, training rooms at 6am, gym light, sideline glare, and it never changes per customer. Bronze carries the product's own voice: warnings, structure, identity. Everything a team touches emotionally comes from one variable instead: their color.

Core tokens · Forged BronzeFixed · not themeable
--shell
#141110
--shell-deep
#100E0C
--line
#2B2724
--text
#EDE6DA
--bronze
#C9853F
--flag
#CE8A3A
04 · Decided · Team accent engine

One token, whole product. Try it.

Every org gets its identity through a single accent token that threads the entire interface: rings, meters, pills, avatars. The shell never moves, so the product stays legible and the brand work is one decision, not a theme audit. Pick a team color and watch it propagate.

Live demo · accent propagation
Squad Readinessteam accent
75Ready
Sleep
Load
Soreness
Recovery
Team dashboard · morning view
Flagged before practice
MT
M. Torres
Guard
52
JK
J. Kim
Forward
58
AL
A. Lujan
Center
81Cleared
DR
D. Reyes
Guard
77Cleared

Design rule the engine enforces: the team color never carries meaning. Ready, flagged, and warning states stay in the product's own palette, so a crimson team and a green team read risk identically. Identity is decoration; safety semantics are fixed.

05 · Open questions

Unresolved, on purpose

Q1

Is a single readiness number honest? One score is decisive but hides its inputs. The current bet: lead with the number, keep the four drivers one glance away, never let the score appear without them.

Q2

Where does alert fatigue start? Trainers ignore systems that cry wolf. Exploring thresholds the staff tunes per athlete, versus fixed sport level defaults.

Q3

Sideline versus office density. The same data needs a glanceable phone view at practice and a dense review view at a desk. One responsive system or two deliberate products?

Q4

Athlete facing honesty. If athletes see their own readiness, does self reporting get gamed? The training room says yes unless reporting stays consequence neutral.

06 · Also on the bench

Other things I'm making

This site

Designed and built as a working demo of the same systems: Kinetic type, the Forged Bronze palette, and a light and dark theme that switches like a sunrise.

Woodworking

Furniture and decor out of the home wood shop. Different material, same obsession: joints that hold under load.