SELECTED
A selection of work spanning full-stack engineering, AI, and systems design. Each project links to a deeper case study.
ScoutMind AI

UK sports-tech SaaS that turns raw football footage into structured player, team and match intelligence for scouts and analysts. Upload a full match and the platform returns per-player tracking, team shape and tactical analysis mapped onto real pitch coordinates — usable data, not a video with boxes drawn on it. A 20-stage computer-vision pipeline handles player and ball detection, multi-object tracking, identity resolution across the whole match and pitch calibration; an LLM layer then turns that validated output into scouting reports and tactical observations in plain language, constrained to verified system evidence rather than raw model predictions. Because analysts have to trust what they act on, a human-in-the-loop workflow lets them correct any output and regenerate everything downstream of it. Full-length matches process asynchronously with checkpoints and resumable jobs, so a long run recovers from failure without restarting, and evaluation harnesses catch tracking and classification regressions as the pipeline evolves. Next.js, React and TypeScript on the front, Python and FastAPI services behind, with PostgreSQL, object storage, queues and GPU workloads on AWS.
QuantraAI

A markets analytics platform for stocks and crypto that finds patterns in price data and explains them in plain English. The statistics are worked out in TypeScript first, and the AI only ever reads the finished numbers and writes them up, so it cannot invent a figure. Every call the system makes is recorded and checked against what the market actually did a week and a month later, and that scoreboard is public. The same engine points at personal finances too: Financial Health takes income, commitments and debts, works out what is affordable and compares four repayment plans, holding money as whole pence so the arithmetic never drifts. Around all of it sits an eval suite of 36 checks that scores the AI on whether it invented anything, stayed inside its limits and degraded cleanly when the model was unavailable, plus a log of every model call with its tokens, latency and cost. Built with Next.js on Vercel and Nest.js on Railway, over Postgres with Drizzle, and Stripe billing enforced on the server.
Meetly AI

AI-augmented video conferencing platform built around live calls, scheduled rooms, and intelligent post-call analysis. Claude API transcribes and synthesizes each session into structured summaries, action items, decision logs, and sentiment reports. Real-time presence, room state, and recordings are powered by GetStream, with auth via Clerk and a responsive Next.js front-end.
LLM vs Fine-Tuning

Empirical study that reframes emotion classification as a production decision rather than a leaderboard contest. I benchmarked four approaches on the same 417k-sample corpus: TF-IDF and Linear SVM, fine-tuned DistilBERT, prompted Claude Haiku 4.5 with constrained structured output (zero- and few-shot), and QLoRA on Qwen2.5-1.5B. Each was measured on macro-F1, p95 latency and dollar cost per 1,000 predictions. The headline result: the 67M-parameter fine-tuned encoder reaches 0.9128 macro-F1 and beats the frontier LLM by roughly 40 points at effectively zero per-prediction cost, while even the classical SVM beats the LLM by 32 points. Shipped with a live three-way classifier on Hugging Face Spaces, a FastAPI inference service, a Docker image, a 92-test reproducibility harness and a written paper.
KinderGrow AI

AI-powered child health and development platform. Parents log sleep, feeding, growth and activity data, and the app pairs it with Claude-generated insight summaries that surface pattern analysis, milestone narratives, and clinical-style daily reports. Built on Next.js Server Actions with strict per-account data isolation and a fully responsive, accessible dashboard.
ProofLog


Tamper-proof, location-verified records of real-world activity. Captured on your phone, signed on the server, shareable as a link or a PDF. You start a session and capture evidence (photos, video, notes, GPS checkpoints). Every item is stamped with time and location, and the server then seals it with a SHA-256 integrity hash. Built offline-first, so every action is instant and works with no signal.
SLYEST AI — Scientific Computing & Symbolic Math Assistant

A desktop scientific computing assistant that turns a calculator into a serious math workbench. Built in Python with PyQt6 and SymPy, it pairs symbolic computation with interactive plotting, a step-by-step learning mode and intelligent autocomplete so engineers and students can derive, visualise and verify results inside a single tool. A modular, event-driven architecture and an automated test suite keep the system correct, extensible and ready for new computation modules without regressions.
N-Gram Language Modeling

Hands-on NLP research project that implements a trigram language model from scratch on the Brown corpus. It covers probability estimation, multiple smoothing strategies (Laplace, Kneser-Ney) and perplexity-based evaluation. A head-to-head comparison against modern LLMs through the Google Gemini API quantifies the gap between classical statistical models and contemporary transformers.
Information Retrieval System

Classical information-retrieval engine built from the ground up. It implements tokenisation, inverted-index construction, TF-IDF weighting and cosine-similarity ranking to enable efficient query-time search over a document corpus. The project exposes the mechanics behind every modern search engine before the neural era.
VirtualCafe

A deeper experiment into advanced programming, data structures and concurrency. I built a Java application that simulates a high-traffic café and then pushed it through the patterns real concurrent systems live with: thread coordination, deadlock-free synchronisation, queue and buffer structures, the producer-consumer flow, and safe shared-resource access. The café is the toy. The point is what happens at the boundary between threads, structures and load.