How FormIQ turns video into measurable feedback
A high-level look at the core flows, services, and rules engine that power athlete-to-coach feedback in seconds.
Core flow
Step 1
Capture
Athlete uploads short clip (≤60s).
Step 2
Store & stream
Adaptive video stored on object storage.
Step 3
AI pose engine
MediaPipe extracts 17-joint skeleton per frame.
Step 4
Rules engine
Sport-specific heuristics flag form issues.
Step 5
Coach review
Human coach adds timestamped feedback.
System diagram
Client
- Web app (React + TanStack)
- Mobile (PWA)
- Coach console
Edge & API
- Gateway / auth
- Upload signing
- Webhooks
Core services
- Video service
- Pose AI worker
- Rules engine
- Booking & payments
Storage
Object store (videos), Postgres (metadata), Redis (queues)
Observability
Logs, traces, AI eval metrics, model drift alerts
Rules engine
For every detected joint sequence, the engine evaluates sport-specific rules and emits actionable insights.
- Elbow alignment within 5°
- Release angle 48–55°
- Wrist follow-through ≥ 80°
- Touch frequency ≥ 2/s
- Hip-to-ball distance < 0.6m
- Body lean within ±10°
- Toss height consistency σ < 8cm
- Trophy pose at frame ratio 0.45
- Shoulder rotation ≥ 90°
- Stride length symmetry > 95%
- Knee drive height ≥ hip
- Ground contact time < 100ms
Data lifecycle
- 1
Upload signed
Client requests signed URL → uploads directly to object storage.
- 2
Async pipeline
Worker picks job → extracts frames → runs MediaPipe → persists pose data.
- 3
Rules evaluation
Pose data is scored against sport-specific rules → score + insights.
- 4
Coach loop
Coach adds timestamped feedback → notification to athlete.
- 5
Audit & retention
Activity is logged. Videos auto-archive after 90 days.
Ready to see it in action?
Jump in and explore the full platform.