Golf Analytics Platform
Golf prediction needs hole-level history across tours, and each tour publishes it differently.

Problem
Golf prediction runs on hole-level history — who scores where, on which course, in which conditions — and each tour publishes that history in its own shape, through its own interface, at its own pace.
Approach
One collector per tour against a shared shape: the PGA Tour through its GraphQL interface, with concurrent requests held under a limit and backing off when the service pushes back; the DP World Tour and the LPGA from their own sources, with the LPGA reaching back to 2019. A live feed runs on a schedule during events.
On top sits a prediction app the analyst drives: strokes gained by category, course history and a recency weighting, each adjustable by hand, turned into win probabilities for the field.
Result
A hole-by-hole archive across the PGA Tour, DP World Tour and LPGA, a live tournament feed, and a prediction app that turns the analyst's weights into win probabilities — client work, delivered as one system rather than three scripts.
Stack
Python and asyncio for collection, GraphQL for the PGA Tour, pandas for the archive, and Streamlit for the prediction app.