System design
How the architecture holds its boundary
A production system is defined by what it refuses as much as what it accepts. Use the original video as evidence, preserve confidence and unavailable markers, and choose one coaching priority rather than treating a score as medical or officiating truth.
Control planes
Cross-platform client
Flutter handles identity, upload, live job state, reports, and deletion across mobile and web.
Owner-scoped control plane
Firebase owns owner-scoped upload authorization, queue state, billing, dispatch, completion, and deletion.
Failure-aware GPU pipeline
Disposable GPU workers run a staged vision pipeline and publish immutable generation-scoped artifacts.
Request lifecycle
record and owner-authorized upload
→ media validation and normalization
→ gameplay, court, ball, player, bounce, pose, and shot stages
→ relationship and evidence validation
→ immutable generation artifacts
→ canonical result publication and frame-linked reportFailure model
Unreadable video, insufficient calibration, duplicate jobs, competing workers, partial inference, and failed publication remain explicit states rather than fabricated measurements.
Verification checklist
- Owner isolation: Every job, upload, result, and deletion is owner-scoped.
- Atomic publication: A canonical result pointer changes only after the complete generation is durable.
- Measurement honesty: Unknown or unavailable evidence remains unknown; the product does not invent contact, 3D, or line calls.
- Bounded video access: Short-lived capabilities, deletion paths, and explicit EU-to-US inference transfer boundaries constrain video handling.