Client build
A vision pipeline that reads the whole match.
Detection, tracking, and per-player event attribution over raw match footage — the full pipeline on a GPU worker, no off-the-shelf model.
End-to-end
detection, tracking, event attribution — no off-the-shelf model
Through occlusion
Kalman-predicted track when the ball is hidden
GPU worker
the full pipeline over raw match footage
The problem
Raw match footage is the hardest kind of video to read automatically. The camera itself moves — panning, following play — so nothing in the frame is a stable reference. The most important object, the ball, is small, fast, and regularly hidden behind players. And the question that matters isn't "where is everything" but "what happened, and who did it."
The approach
We built the pipeline in three stages that feed each other. Object detection finds and tracks every player on the field. A dedicated ball tracker follows the ball itself. And a per-player event model sits on top of both, reading what actually happens on the ball and attributing it to the player who did it.
There is no off-the-shelf model doing the work — the pipeline is engineered end to end for this problem.
The engineering
The ball tracker is the hard core. It's built on optical flow — reading motion between frames — with camera-motion compensation, so the tracker separates the ball's real movement from the camera's pan. Over that sits Kalman filtering: a motion model that keeps predicting the ball's path when observation fails, which is what carries the track through occlusion — the moments when players block the ball from view entirely.
The figure above is drawn from the build: the solid route is the observed ball track, the dashed segment is the Kalman-predicted path through the occlusion, and the diamonds are attributed events — the moments the event model credits a touch to a specific player.
The whole pipeline runs on a GPU worker over raw match footage — footage in, a structured account of the match out.
The outcome
The client gets a full read of the match without a human watching it: every player tracked, the ball followed through pans and occlusion, and every on-ball event attributed to the right player, end to end.
The next build
Every system here started as one conversation. Tell us what your team does by hand.
