Tracking cognitive fatigue with a 4-signal weighted model — what I learned after building this for myself
For the last several months I've been self-tracking decision fatigue. Question I was trying to answer: can you quantify "mental tiredness" in real time using passive signals from an iPhone, accurately enough to be useful for decision timing?
The model I landed on uses 4 weighted signals combined into a 0–100 score:
Decision load (50%) — self-logged decisions, weighted by cognitive cost (trivial/medium/heavy)
Time-of-day (20%) — adjusted circadian curve, anchored to personal wake time, with a post-lunch dip
Motion / restlessness (15%) — CoreMotion step cadence variance as a fidget proxy (fidgeting correlates with depletion in the lit)
App switching (15%) — context switch count as a proxy for scattered attention
Calibration: first 3–5 days builds a personal baseline so the score is relative to YOU, not absolute. Without this the score is meaningless — some people peak at 11am, some at 4pm.
What surprised me:
• Motion signal is noisier than expected — had to add EMA smoothing with a 20-min window
• Decision weighting matters more than decision count — 1 heavy decision ≠ 10 trivial ones
• The afternoon slump is real and shows up cleanly in the data around 1:30–3pm for most testers
Things I haven't figured out yet:
• HRV integration (would probably replace motion as the physiological signal)
• Sleep debt carryover — currently ignored
• Caffeine compensation
Anyone else working on cognitive load / decision fatigue measurement? Would love to compare notes on signal selection.
(App link in first comment per sub rules.)