Projects
Meal Planner
A meal planning system, it scrapes recipes from the web, uses a local LLM to tag them, scales portions, and generates a weekly plan that tries to balance season, effort and variety.
Details
Solving a niggle, 500 recipes were scraped from the web, processed, tagged using a locally-hosted LLM, and a weekly plan can then be generated with regards to season, effort, diet requirements, etc. A local version is also available that allows users to customise for the size of their household, and rate recipes (per individual).
Read more hereTefr Glyph Spell Checker
A project that took the enchanters codex from Tefr RPG, and allows you to search for possible spells from known glyphs.
Details
Tefr's enchanting system uses a glyph-based approach. Characters learn glyphs, and combine them to create spells. With over 800 known spells, this is a lot to remember so this project helps users find valid combinations. This was an offshoot of the Tefr Oracle project, which is still in progress.
Read more hereReferee Bias Analysis
Examining whether football referees issue red cards at different rates depending on players' skin tone, using the Crowdstorming dataset.
Details
Built three increasingly complex GLM/GLMM models to test whether the effect held up as model complexity increased. Used as a refresher project for R after several years working mainly in Python. Next step is extending the analysis to yellow cards as an outcome variable.
Read more hereJob Tailor
Personalised agentic system for tailoring job applications to specific roles.
Details
A local, privacy-first pipeline that tailors a CV profile to a specific job advert, with an independent fact-checking stage built to catch fabricated claims before they reach a real application. Runs entirely on open-weight models via Ollama, so no API costs or external data sharing. Currently building out an adversarial critic loop to flag weak framing and genuine gaps, alongside the fact-checker.
Read more hereTefr Oracle
Natural language query system for the Tefr RPG rule system.
Details
Work in progress... Currently deciding how to process the complex pdf documents into meaningful chunks as naive chunking strategies are not sufficient. The goal is to allow users to ask questions about the Tefr RPG rule system in natural language, and have the system return natural language answers, and reference the rule book. This will be done using a combination of retrieval-augmented generation and a locally hosted large language model to respect the intellectual property of the author.
Read more hereChain-of-Thought Faithfulness
MSc thesis examining whether DeepSeek R1's stated reasoning actually reflects the factors driving its answers.
Details
We found that the model changed its behaviour in response to a hint embedded in the prompt, without referencing that hint anywhere in its chain-of-thought. This implies that the COT is not a faithful representation of the underlying reasoning but would be better considered a post-hoc explaination. Published in the ACL Anthology as part of IJCNLP-AACL 2025, CHOMPS workshop.
Read the paper →Comparison Reasoning in LLMs
MSc research project examining comparison reasoning in OLMo.
Details
I investigated whether OLMo actually reasons through comparison questions ("who was born earlier, X or Y?") or relies on pattern-matching to get the right answer, using saliency analysis and counterfactual testing. The results found that the model often failed to reason correctly through these questions, and showed limited attention to the relevant tokens.
Read more hereCarbon Cost of ML Image Competitions
BSc research project examining the carbon cost of machine learning image analysis competitions.
Details
We attempted to calculate the carbon footprint of an entire Kaggle machine learning competition, rather than just a single trained model. The results highlighted the significant energy consumption and associated emissions, prior to the advent of widespread generative AI adoption.
Read more here