Product Architecture

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.

Basketball — Jump Shot
  • Elbow alignment within 5°
  • Release angle 48–55°
  • Wrist follow-through ≥ 80°
Soccer — Dribble
  • Touch frequency ≥ 2/s
  • Hip-to-ball distance < 0.6m
  • Body lean within ±10°
Tennis — Serve
  • Toss height consistency σ < 8cm
  • Trophy pose at frame ratio 0.45
  • Shoulder rotation ≥ 90°
Track — Sprint
  • Stride length symmetry > 95%
  • Knee drive height ≥ hip
  • Ground contact time < 100ms

Data lifecycle

  1. 1

    Upload signed

    Client requests signed URL → uploads directly to object storage.

  2. 2

    Async pipeline

    Worker picks job → extracts frames → runs MediaPipe → persists pose data.

  3. 3

    Rules evaluation

    Pose data is scored against sport-specific rules → score + insights.

  4. 4

    Coach loop

    Coach adds timestamped feedback → notification to athlete.

  5. 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.

Continue to FormIQ