Projects

Chain-of-Thought Faithfulness in DeepSeek R1

Research & Publication Complete
Python · LLM evaluation · Prompt design · Statistical analysis

MSc thesis examining whether DeepSeek R1's stated reasoning actually reflects the factors driving its answers.

Details

Found that the model would change its final answer in response to a hint embedded in the prompt, without ever mentioning that hint anywhere in its chain-of-thought. Published in the ACL Anthology as part of IJCNLP-AACL 2025, CHOMPS workshop.

Read the paper →

Meal Planner

Personal Project Completed
LLM, web scraping, data processing, UI/UX

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 here

Tefr Glyphs Combinations Checker

Personal Project Completed
NLP, UI/UX

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.

Read more here

Referee Bias Analysis

Personal Project In progress
R · GLM/GLMM · Statistical modelling

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 here