Skip to content
View saiemgilani's full-sized avatar

Block or report saiemgilani

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
saiemgilani/README.md

Hi, I'm Saiem 👋

Machine learning engineer, computer vision by trade. Creator and maintainer of the SportsDataverse. Open sports data for R, Python and JavaScript.

saiemgilani.com Bluesky X LinkedIn

GitHub followers GitHub stars Bluesky followers
CRAN downloads of the packages I maintain PyPI downloads npm downloads

I'm a machine learning engineer, computer vision by trade, and the creator and maintainer of the SportsDataverse: R, Python and JavaScript packages that make public sports data easy to get at. They share the same ideas about tidy data, the same automated release pipeline and, where it matters, the same models. I have spent most of my evenings since 2020 on it, and the goal hasn't changed: take the gathering out of the way of the research.

What I'm working on now

  • The R packages finished a long CRAN campaign in 2026. cfbfastR, hoopR, wehoop, fastRhockey, baseballr, oddsapiR and cfbseedR are all current on CRAN; the rest of the family installs from sportsdataverse.r-universe.dev.
  • sportsdataverse-py was rebuilt end to end on polars. ESPN across every league, the NBA and WNBA stats APIs, NHL, MLB and Statcast, HockeyTech, stats.ncaa.org, plus the same loaders and models the R packages ship.
  • Models ship with the data. Every load_*() function reads automated releases (sportsdataverse-data): play-by-play, box scores, schedules, rosters and, increasingly, fitted models (expected points, win probability, shot quality, expected goals) with the training code committed beside them.
  • Public data status. sportsdataverse.org/status shows, nightly, how fresh every producer's data is and whether its pipeline is passing.
  • Logos, colors and headshots for plots and tables: sdvplotR for ggplot2, gt and reactable, and its Python sibling sdvplot (pre-release).
  • Blazing the Nets, rebuilt. My 2021 Brooklyn Nets shooting dashboard, now on d3 v7 and Next.js and reading release parquet files at request time (write-up).
  • The lab on my site: small, runnable ideas, like querying a release file from the browser with DuckDB.

Latest notes

From saiemgilani.com/notes, refreshed daily from the site's RSS feed.

Packages I build and maintain

cfbfastR hoopR wehoop fastRhockey baseballr oddsapiR cfbseedR cfb4th cfbplotR sdvplotR recruitR usfootballR sportsdataverse (R) sportsdataverse-py sportsdataverse-js

Package What it covers Version Downloads
cfbfastR (source) College football play-by-play, EPA and win probability CRAN version CRAN downloads
hoopR (source) Men's basketball: ESPN, the NBA Stats API, KenPom, stats.ncaa.org CRAN version CRAN downloads
wehoop (source) Women's basketball: ESPN, the WNBA Stats API, stats.ncaa.org CRAN version CRAN downloads
fastRhockey (source) NHL, PWHL and the HockeyTech leagues CRAN version CRAN downloads
baseballr (source) Bill Petti's baseball package, which I maintain CRAN version CRAN downloads
oddsapiR (source) Sports odds from The Odds API CRAN version CRAN downloads
cfbseedR (source) College football season simulation and playoff seeding CRAN version CRAN downloads
cfb4th (source) Fourth-down decisions R-universe version
cfbplotR (source) College football logos and colors for ggplot2 R-universe version
sdvplotR (source) Logos, colors, headshots and themes across leagues for ggplot2, gt and reactable R-universe version
recruitR (source) College recruiting rankings R-universe version
usfootballR (source) MLS and NWSL from ESPN R-universe version
sportsdataverse (R) (source) The meta-package that installs and loads the family R-universe version
sportsdataverse (Python) (source) Every league above in one polars-first package PyPI version PyPI downloads
sdvplot (source) Python sibling of sdvplotR (pre-release) not yet on PyPI
sportsdataverse (Node.js) (source) ESPN, 247Sports and NCAA endpoints for Node.js npm version npm downloads

Every package has a printable one-page cheat sheet at sportsdataverse.org/cheatsheets.

Data status

Live, from the nightly ecosystem snapshot. Out of season a league reads idle rather than stale; red means its update pipeline failed.

CFB NFL NBA MBB WNBA WBB NHL PWHL MLB

Projects

Live college football analytics built on the same expected-points and win-probability models the packages ship (source).

Game on Paper game page

More

Talks and writing

I presented the SportsDataverse at the Carnegie Mellon Sports Analytics Conference in 2021. The paper won the Data and Software contribution in the reproducible research competition's open track. Slides · Repository · Paper

The notes on my site pick up where that paper left off, one package at a time.

Projects I contribute to

GitHub activity

Saiem Gilani's GitHub stats Most used languages

GitHub contribution streak

3D contribution calendar

A snake eating the contribution graph

Languages and tools

Data and ML: Python, R, polars, pandas, DuckDB, XGBoost, scikit-learn, PyTorch, TensorFlow, OpenCV

Data and ML

Web and apps: TypeScript, React, Next.js, Node.js, d3, FastAPI

Web and apps

Infrastructure: Docker, GitHub Actions, Vercel, AWS, GCP, Azure, Linux

Infrastructure

Support

If the packages save you time, you can help keep the data flowing: Become a member on Patreon Ko-fi · release notes and new datasets by email at sportsdataverse.org/join.

Earlier work

Pinned Loading

  1. sportsdataverse/cfbfastR sportsdataverse/cfbfastR Public

    An R package to quickly obtain clean and tidy college football play by play data

    R 112 15

  2. sportsdataverse/hoopR sportsdataverse/hoopR Public

    An R package to quickly obtain clean and tidy men's basketball play by play data.

    R 150 26

  3. sportsdataverse/wehoop sportsdataverse/wehoop Public

    An R package to quickly obtain clean and tidy women's basketball play by play data.

    R 51 7

  4. game-on-paper-app game-on-paper-app Public

    http://www.gameonpaper.com

    TypeScript 47 7

  5. sportsdataverse/sportsdataverse-js sportsdataverse/sportsdataverse-js Public

    Retrieves sports data from a popular sports website as well as from the NCAA website, with support for NBA, WNBA, NFL, NHL, College Football and mens and womens college basketball,

    TypeScript 89 17

  6. sportsdataverse/sportsdataverse-py sportsdataverse/sportsdataverse-py Public

    sportsdataverse python package

    Python 122 18