Things I've built.End to end, data in to decision out.

6 projects

vlr.gg Crowd Sentiment vs. the Betting Market

91,393 vlr.gg comments posted strictly before match start, across 1,732 VCT matches from 2023 to 2026, tested against the bookmaker's price: does the crowd know anything the market has not already priced?

  • The market is genuinely predictive — AUC 0.697 and Brier 0.2202, against 0.2500 for a coin flip.
  • Crowd lean on its own is close to a coin flip: 50.9% directional accuracy, AUC 0.510.
  • Added to the market model the crowd coefficient is −0.272 (p = 0.085), and walk-forward folds move out-of-sample AUC by thousandths. The answer is no.
pythonnlplogistic regressionwalk-forward validation
write-uprepository

Repeat-Sales House Price Index

Ireland publishes every residential sale since 2010, but the register gives the home itself no identifier — so you cannot follow one house through time. This links sales of the same property and builds a quality-gated repeat-sales price index for Co. Donegal from them.

  • 21,484 register rows narrowed to 19,545 index-eligible sales, yielding 1,224 repeat-sale pairs across 1,113 homes.
  • Linkage scored against 260 hand-labelled pairs: 98.0% precision (95% CI 95.6 to 99.7%) at 75% recall.
  • Out-of-sample error on 2023–2025 test sales is 25.6% median, against 26.7% using the CSO national index and 37.8% unadjusted; 90% prediction intervals cover 85.6 to 88.0%.
  • Runs end to end on Databricks — Unity Catalog, Delta, Asset Bundles, serverless Jobs, MLflow, AI/BI dashboards — and identically on a laptop with DuckDB. A full monthly refresh is 11 tasks in about 10 minutes.
  • The Streamlit lookup app states which sale an estimate starts from, which index moved it, and how wide the uncertainty is — and refuses to guess when no fair number exists.
databricksunity catalogdeltamlflowsplinkduckdbstreamlit
repositoryapp screenshot

Payroll Anomaly Detector

An explainable payroll anomaly detection platform over 4,450 synthetic payments, pairing transparent rules with a time-aware Isolation Forest.

  • Investigation dashboard with human-readable alerts and responsible-AI controls.
  • GitHub Actions CI pipeline with automated tests around the scoring logic.
  • Designed against the shape of real people-data and payroll product problems.
pythonscikit-learnpostgresqlpower bidockergithub actions
repository

Dublin Bus Reliability Analytics

GTFS schedule, real-time and weather data integrated across 20 Dublin bus routes — 5.88 million stop-time records through tested, Dockerised pipelines.

  • Power BI reporting model built on a cleaned, conformed reliability layer.
  • Leakage-controlled scikit-learn prediction workflow for decision-ready output.
pythonpostgresqlpower bidocker
repository

Counter-Strike Predictive Analytics

50,000+ Counter-Strike rounds and 150 GB+ of match data turned into structured performance features and graph relationships.

  • Multiple classifiers with cross-validation, regularisation and class balancing.
  • Evaluated on accuracy, precision, recall, F1 and calibration.
  • Probability outputs benchmarked directly against bookmaker odds.
pythonscikit-learnshapgraph neural networks
repository

OireachtasDB

Search over the Official Report of the Houses of the Oireachtas — every Dáil and Seanad debate from 2020 onward, and every recorded vote, built from the Oireachtas API.

  • Every speaker keeps the party they held on the day they spoke, resolved by a dated join. Most archives quietly relabel old speeches with a member’s current party; this one does not.
  • 318,530 contributions across 1,190 sittings, 2,470 divisions with the complete Tá/Níl roll, and 18,237 debates profiled by TF-IDF so the terms surfaced distinguish that debate rather than parliamentary language in general.
  • Summaries are extractive, never generated — every word was said in the chamber. Results export with the record URI and fetch timestamp, because the Official Report is revised after publication.
  • Going live at oireachtasdb.ie. Figures above are current to 01-08-2026.
oireachtas apietl pipelinefull-text searchtf-idf
repository