Skip to main content

MO:COACH - Intelligence Domain

"The Brain" — "I think so you don't have to"

MO:COACH is the intelligence layer that analyzes data from MO:PULSE, applies training science, and provides personalized guidance.


Verticals

VerticalPurposeSystemsStatus
MoInsightData analysis & patterns31/3 built
MoAdaptTraining adjustments44/4 built
MoChatAI coaching30/3 built

Domain Data Model

interface MoCoachOutput {
insight: {
trends: TrendAnalysis[];
patterns: PatternInsight[];
};
adaptation: {
fatigue: FatigueResult;
progression: ProgressionStatus;
deload: DeloadDecision;
suggestions: WorkoutSuggestions;
};
coaching: {
recommendations: Recommendation[];
education: EducationContent[];
};
}

MoAdapt Logic Overview

Fatigue Calculation

Fatigue Score (0-10) = Sum of:
├── RPE Creep (0-2) → Detects upward RPE trend
├── Performance Drop (0-2) → High average RPE
├── Recovery Debt (0-3) → Poor sleep/energy/soreness
├── Volume Load (0-2) → Training volume spike
└── Streak Score (0-1) → 5+ consecutive days
ScoreLevelColorAction
0-3FreshGreenTrain normally
4-5NormalYellowMonitor closely
6-7ElevatedOrangeConsider reducing
8-9HighRedReduce intensity
10CriticalRedRest day recommended

Progression Gates

Before allowing weight increase, all gates must pass:

┌─────────────────────────────────────────┐
│ PROGRESSION GATES │
├─────────────────────────────────────────┤
│ 1. Fatigue Gate → Score < 7 │
│ 2. Performance Gate → Hit target reps │
│ 3. RPE Gate → RPE in range │
│ 4. Recovery Gate → Adequate recovery │
└─────────────────────────────────────────┘
Exercise TypeTarget RepsMax RPEWeight Jump
Compound88+5 lbs
Isolation107+2.5 lbs

Deload Triggers

TriggerConditionDeload Type
ScheduledEvery 4 weeksVolume (60% volume, 100% intensity)
Critical Fatigue2+ days at score 8+Intensity (70% volume, 85% intensity)
Prolonged Elevated5+ days at score 6+Volume
Combined FactorsHigh fatigue + poor recoveryFull Rest

Domain Interface

interface MoCoachInterface {
// Fatigue
calculateFatigue(userId: string): Promise<FatigueResult>;
getFatigueStatus(): Promise<FatigueStatus>;

// Progression
checkProgressionGates(exerciseId: string): Promise<ProgressionGates>;
getProgressionRecommendation(exerciseId: string): Promise<ProgressionRec>;

// Deload
checkDeloadNeeded(): Promise<DeloadDecision>;
startDeload(type: DeloadType): Promise<void>;

// Suggestions
suggestWeight(exerciseId: string): Promise<WeightSuggestion>;
getTrainingStatus(): Promise<TrainingStatus>;
}

Code Organization

/lib/mo-coach
├── /adapt
│ ├── fatigue.ts → MoFatigue
│ ├── progression.ts → MoProgress
│ ├── deload.ts → MoDeload
│ └── suggestions.ts → MoSuggest
└── index.ts → Domain exports

Import Pattern

import {
calculateFatigue,
checkProgressionGates,
checkDeloadNeeded,
suggestWeight
} from '@/lib/mo-coach';

API Endpoints

EndpointMethodSystem
/api/progressionGETMoProgress, MoTrends
/api/training/statusGET/POSTMoFatigue, MoDeload
/api/training/suggestGETMoSuggest

Status

MetricValue
Verticals3/3
Systems Built5/10 (50%)
API Endpoints3