Products, models, and data systems.

Selected work across sports analytics, machine learning, data engineering, and product development.

Selected work

Active products where the data pipeline, analysis, and interface work together.

  • UK AI Jobs logo

    A specialist UK job board powered by a reusable multi-source collector, normalized job data, AI classification, alerts, and paid subscriptions.

    Next.jsTypeScriptPostgreSQLLLM enrichment

    ukaijobs.co.uk

  • UK Data Jobs logo

    A focused job board for UK data roles, helping analysts, analytics engineers, data scientists, and other data professionals find relevant opportunities.

    Next.jsTypeScriptJob board

    ukdatajobs.com

  • Field Theory logo

    An NFL analytics platform covering EPA, CPOE, win probability, player value, power rankings, and situational splits across play-by-play data.

    PythonPolarsDuckDBFastAPINext.js

    View source

  • FPL Analyst logo

    fplanaly.st and its mobile companion share an automated Python, dbt, and FastAPI pipeline plus an xPoints model. Together they power player research, squad analysis, fixture planning, price tracking, and transfer recommendations.

    Next.jsReact NativePythondbtFastAPIxPoints

    fplanaly.st

  • NBA Lineup Analytics logo

    A lineup and player impact platform backed by an automated NBA data pipeline, advanced metrics, RAPM, and static data publishing.

    PythonNext.jsnba_apiRAPMData pipelines

    nbalineup.vercel.app

  • Premier League Prediction Markets logo

    A live football market terminal comparing Polymarket and Kalshi prices, tracking market history, signals, arbitrage, and closing-line performance.

    Next.jsFastAPIPythonPostgreSQLWebSockets

    Open app

Earlier work

Focused experiments that shaped the larger products above.

  • Models expected interceptions from NFL play-by-play data and compares quarterback performance using Brier scores.

    Pythonscikit-learnXGBoost

    View source

  • Estimates expected rushing yards from play context to identify running backs who created more than their blocking and situation allowed.

    PythonXGBoostnflfastR

    View source

  • Measures field-goal difficulty and kicker performance with a random forest model trained on NFL play-by-play data.

    PythonRandom ForestnflfastR

    View source

  • Match reports and original football graphics built from data collected from WhoScored, FotMob, and SofaScore.

    PythonRWeb scrapingmplsoccer

    View on X

  • A prediction game for Premier League player outcomes with user accounts, picks, and season-long scoring.

    Next.jsPrismaAuth.jsSQLite

    View source

  • A scheduled Telegram bot that publishes daily Fantasy Premier League player price changes.

    PythonTelegram APIRailway

    Open Telegram

  • Collects, combines, and cleans data from FBRef's top five leagues on a scheduled pipeline.

    PythonAirflowPostgreSQL

    View source

  • Compares a personal portfolio with the S&P 500 through risk, return, drawdown, and allocation analysis.

    PythonStreamlit

    View source