Inspiration

Instructions from US Soccer. Meant to help users with game analysis.

What it does

A Streamlit app that loads SkillCorner tracking data, lets you scrub frame-by-frame, and export clips as GIF/MP4. It mirrors a video analyst’s workflow while preserving off-ball context from raw data.

How I built it

Language: Python 3.10+ — rich data/plotting ecosystem, fast prototyping. UI: Streamlit for stateful widgets and rapid analyst-facing interfaces. Pitch rendering: streamlit-soccer (primary) with Plotly fallback to ensure portability when the widget isn’t available. Data loading: kloppy for standardized football data access (SkillCorner Open Data). Imaging/encoding: Pillow + imageio (GIF everywhere), imageio-ffmpeg + ffmpeg (MP4). Caching: On-disk cache under app/data_cache/ + Streamlit caching decorators to avoid re-downloads. Project structure: Clear separation of concerns — loaders (I/O), transforms (normalization), render (encoding), main (UI/state).

Challenges we ran into

Allowing the user to download clips to their local device.

Accomplishments that we're proud of

Producing a fully functional app that includes all the features we imagined.

What we learned

How to load data, update the UI between frames, and allow for exporting.

What's next for Aadi FC's Clip Tracking App

Integrate player numbers into the downloadable GIF/MP4.

Built With

Share this project:

Updates

Submission history