Projects

Browse Projects

Everything I've built — web applications, data analysis, and software tools. All in Python, all built to a real standard.

AI Portfolio Assistant cover image

AI Portfolio Assistant

Web

I built a conversational AI assistant directly into my portfolio site. Recruiters and visitors can ask anything about my projects, skills, and background — and get grounded, cited answers in real time, powered by RAG (Retrieval-Augmented Generation) and Llama 3.3 70B via Groq.

AWS Lambda & Amazon Bedrock: Benchmarking TF-IDF, LSTM, and Zero-Shot LLM Sentiment Analysis cover image

AWS Lambda & Amazon Bedrock: Benchmarking TF-IDF, LSTM, and Zero-Shot LLM Sentiment Analysis

Data

A full ML pipeline benchmarking TF-IDF + Logistic Regression, a Keras LSTM, and Claude Haiku via Amazon Bedrock on 50,000 IMDb reviews. The winning model is deployed live as a serverless REST API on AWS Lambda with a Flask frontend.

Amazon Price Tracker Automation cover image

Amazon Price Tracker Automation

Software

Scrapes an Amazon product page daily and sends a Gmail alert when the price drops below your target. Full cron lifecycle management (install, check, remove) built into an interactive terminal menu.

Android App Store Analysis cover image

Android App Store Analysis

Data

Analyses 10,000+ Google Play Store apps with pandas and Plotly to answer real market questions: which categories are most competitive, how much a paid app earns, and how many downloads you give up by charging.

Birthday Email Bot cover image

Birthday Email Bot

Software

Automated birthday email sender that reads a CSV, checks today's date, picks a random letter template, and sends personalised Gmail messages. Runs locally or on a daily GitHub Actions cron schedule.

Blackjack cover image

Blackjack

Software

Terminal Blackjack in Python — two versions side by side. Procedural course solution plus a full OOP rebuild with animated ASCII card UI, chip system, split, double down, insurance, and difficulty modes.

Boston House Price Analysis cover image

Boston House Price Analysis

Data

Multivariable linear regression model predicting 1970s Boston house prices from 13 neighbourhood features, with residual diagnostics, log transformation, and a custom property valuation function.

CNN Food Classifier cover image

CNN Food Classifier

Data

I built a convolutional neural network that classifies food images into 101 categories using two-stage transfer learning with MobileNetV2. Upload any food photo and get instant top-3 predictions with confidence scores — live on Hugging Face Spaces.

Caesar Cipher cover image

Caesar Cipher

Software

Encrypts and decrypts messages using the Caesar cipher algorithm with variable shift input.

Coffee & Wifi cover image

Coffee & Wifi

Web

Flask web app to browse and submit cafes rated by coffee quality, wifi strength, and power socket availability. Built with WTForms, Bootstrap 5, and CSV persistence.

Coffee Machine — Command-Line Simulator cover image

Coffee Machine — Command-Line Simulator

Software

A command-line coffee vending machine in Python. Two builds: the original procedural course exercise and a full OOP refactor with separated concerns, type hints, coin-based payments, ingredient refills, and persisted lifetime revenue.

College Major vs Your Salary — Data Exploration with Pandas cover image

College Major vs Your Salary — Data Exploration with Pandas

Data

Does picking STEM actually guarantee better earnings? This analysis of 1.2M graduate salaries across 51 majors says it's more complicated. STEM leads on starting salary — but growth rates are nearly identical to HASS, and Economics' earnings ceiling beats every engineering field.

Cookie Clicker Bot—Selenium cover image

Cookie Clicker Bot—Selenium

Software

Selenium bot that automates Cookie Clicker: clicks the cookie, hunts golden cookies, buys buildings by CPS payback ratio, and accepts runtime commands to pause, adjust the store-check interval, or stop.

Data Preprocessing Pipeline — NYC Airbnb cover image

Data Preprocessing Pipeline — NYC Airbnb

Data

A production-grade, class-based data preprocessing pipeline built in Python on the NYC Airbnb Open Dataset (48,895 listings). Handles missing values, outliers, duplicates, encoding, and scaling — then generates five before/after diagnostic visualisations.

Flash Card App cover image

Flash Card App

Software

French-to-English flashcard app built with tkinter. Cards auto-flip after 3 seconds, progress persists across sessions, and an OOP advanced build separates logic from UI using injected callbacks and stdlib csv.

Flight Club cover image

Flight Club

Software

Python CLI that scans Google Flights via SerpApi for round-trip deals from Madrid, fires WhatsApp and email alerts via Twilio and Gmail when a fare drops below your threshold. Destinations and price targets live in a Google Sheet via Sheety.

GUI Quiz App cover image

GUI Quiz App

Software

True/False trivia quiz app built with Tkinter. Fetches live questions from the Open Trivia Database across 15 categories, with colour feedback, score tracking, keyboard shortcuts, and a clean MVC architecture.

Google Trends Time Series Analysis cover image

Google Trends Time Series Analysis

Data

Three economic signals — Tesla, Bitcoin, and US unemployment — each paired with Google Trends search data across mismatched time frequencies and aligned by resampling. The 2020 COVID shock compressed months of unemployment pattern into weeks.

Gym Booking Bot cover image

Gym Booking Bot

Software

Selenium bot that logs into a gym practice site, finds every Tuesday and Thursday 6 PM class, and books or joins the waitlist automatically. Handles network failures with a configurable retry wrapper. OOP advanced build with .env credentials and headless CI support.

Habit Tracker — Pixela cover image

Habit Tracker — Pixela

Software

CLI habit tracker that logs daily activity as graph pixels via the Pixela REST API. Interactive menu, OOP design with a PixelaClient class, and full CRUD support — POST, PUT, and DELETE — with input validation and graceful error handling.

Hangman cover image

Hangman

Software

Two fully playable versions of the same game that together tell a clear story of growth. The project demonstrates not just Python fundamentals, but the ability to revisit earlier work with a critical eye and rebuild it at a significantly higher level.

Higher / Lower Web Game cover image

Higher / Lower Web Game

Web

A Flask number-guessing game played through the browser URL bar. Two builds: a verbatim course version and a modular rebuild that fixes a shared-global bug using Flask session-based state.

Higher or Lower cover image

Higher or Lower

Software

Terminal guessing game: pick which Instagram account has more followers. Includes a procedural course version and a fully rebuilt advanced version with ANSI colors, single-keypress input, and strict layer separation.

ISS Overhead Notifier cover image

ISS Overhead Notifier

Software

Python bot that checks ISS position every 5 minutes via GitHub Actions and emails you when the station is overhead at night. Includes a course-original polling build and an OOP refactor with ISSClient and EmailNotifier classes.

Instagram Follower Bot cover image

Instagram Follower Bot

Software

A Selenium bot that logs into Instagram, scrolls a target account's followers modal, and mass-follows users. Includes a smart unfollow cleanup. Built with undetected-chromedriver to bypass bot detection.

Internet Speed Twitter Complaint Bot cover image

Internet Speed Twitter Complaint Bot

Software

Selenium bot that measures your real internet speed via M-Lab, compares it against your ISP's promised speeds, and automatically posts a complaint tweet on Twitter/X if you're being shortchanged. No API keys needed, pure browser automation.

LEGO Dataset Analysis cover image

LEGO Dataset Analysis

Data

LEGO nearly went bankrupt in 1998. This project joins six relational tables across 15,710 sets to measure exactly what changed — licensed share grew from 0% to 31.5%, average complexity 8×, and minifigure density 57% from 1970 to 2010.

Mail Merge cover image

Mail Merge

Software

Python automation script that generates personalized letters by injecting names into a template. Includes an OOP refactor with a pure-logic MailMerger class, centralized config, and a terminal menu to launch either build. Stdlib only.

Miles ⇄ Km Converter cover image

Miles ⇄ Km Converter

Software

A Tkinter desktop app that converts between miles and kilometers in both directions. Built as Day 27 of 100 Days of Code, with a clean OOP advanced build separating logic, UI, and config.

Morse Code Converter cover image

Morse Code Converter

Software

A Python CLI that converts plain text (A-Z, 0-9) into Morse code. Ships two builds: a course-original and an OOP refactor with raw keystroke navigation, Ctrl+C handling, and a polished terminal launcher.

Movie Budget Linear Regression Analysis cover image

Movie Budget Linear Regression Analysis

Data

Across 5,384 films from 1915–2018, a linear regression on budget vs. worldwide gross gives a slope of 3.12 (R²=55.77%) — every dollar of budget is associated with $3.12 in revenue, yet 37.28% of films still failed to recoup their costs.

Nobel Prize Data Analysis cover image

Nobel Prize Data Analysis

Data

Explores 120+ years of Nobel Prize records to uncover trends in gender, nationality, research institutions, and laureate age — using Plotly choropleth maps, Seaborn regression plots, and Matplotlib dual-axis charts.

NumPy NDArray Computation cover image

NumPy NDArray Computation

Data

NumPy treats images as numbers — a 768 × 1024 photograph is a 3D array of integers. This project works through ndarray operations from first principles: slicing, broadcasting, matrix multiplication, and pixel-level transforms like greyscale conversion and colour inversion.

NumPy vs Pandas Performance Benchmark cover image

NumPy vs Pandas Performance Benchmark

Data

I benchmarked NumPy and Pandas across seven common operations at 100k, 1M, and 10M rows to find out exactly when each library wins — and by how much. The answer turned out to be more nuanced than I expected.

Number Guessing Game cover image

Number Guessing Game

Software

Terminal number guessing game in two versions — a procedural course build and a full OOP rebuild with layered architecture, typed enums, ANSI colours, and animated ASCII art.

Password Manager cover image

Password Manager

Software

Tkinter GUI that generates strong passwords, saves credentials to JSON, and retrieves them by website name. Ships as two builds: a procedural course version and a refactored OOP/MVC advanced version with injected callbacks and zero magic numbers.

Pomodoro Timer cover image

Pomodoro Timer

Software

A tkinter Pomodoro timer that cycles through work and break sessions automatically. Built as a Day 28 course exercise then refactored into an OOP split: pure-logic PomodoroTimer, decoupled Display, and config-driven constants.

Pong Game cover image

Pong Game

Software

Two-player Pong in Python using only the standard library turtle module. Ships an original course build alongside a clean OOP rebuild with a persistent score HUD, pause system, animated title screen, and in-window navigation.

Professional Portfolio Site cover image

Professional Portfolio Site

Web

Full-stack Flask portfolio with a custom admin dashboard, PostgreSQL, a public REST API, media management, automated backups, and CI/CD deployment to Railway via GitHub Actions.

Programming Language Workforce Strategy — Data Analysis cover image

Programming Language Workforce Strategy — Data Analysis

Data

Stack Overflow lost 97.7% of its post volume since 2016 — and its momentum now anti-correlates with hiring demand. This project proves the signal is broken, then builds a four-source replacement index to answer which languages to hire for.

Quiz Game cover image

Quiz Game

Software

Terminal True/False trivia quiz built twice: a preserved course-state original and a full OOP rebuild with 3 game modes, typewriter animation, single-keypress input, and ANSI color UI. Standard library only.

REST API — Cafe & Wifi cover image

REST API — Cafe & Wifi

Web

RESTful Flask API for discovering and managing wifi-friendly cafes. Supports full CRUD via GET, POST, PUT, PATCH, and DELETE endpoints backed by SQLite and documented with Postman.

Rain Alert SMS Bot cover image

Rain Alert SMS Bot

Software

Fetches a 12-hour weather forecast from OpenWeatherMap and sends a WhatsApp or SMS alert via Twilio if rain is expected. Runs automatically every morning via GitHub Actions.

Ron Swanson Quotes App cover image

Ron Swanson Quotes App

Software

Desktop GUI built with tkinter that fetches random Ron Swanson quotes from a public REST API on every button click. Canvas background, image button, live text updates. No page reload, just pure Parks and Rec wisdom on demand.

Semmelweis Handwashing Data Analysis cover image

Semmelweis Handwashing Data Analysis

Data

Re-examination of Dr Semmelweis's 1861 hospital records from Vienna General Hospital (1841–1849). Mandatory handwashing in June 1846 cut the average monthly death rate from 10.5% to 5.0% — confirmed statistically at p ≈ 0.00025.

Snake Game cover image

Snake Game

Software

Classic Snake built with Python's turtle module. Two versions: a course-faithful original and a modular OOP rebuild with welcome screen, game-over overlay, persistent high scores, and an ASCII art menu launcher.

Spotify Musical Time Machine cover image

Spotify Musical Time Machine

Software

CLI tool that scrapes Billboard Hot 100 for any historical date, fuzzy-matches all 100 songs against Spotify's catalogue, and creates a private playlist on your account in one command.

Stock Trading News Alert cover image

Stock Trading News Alert

Software

Monitors a stock's daily price change and fires WhatsApp alerts with the top 3 news headlines via Twilio whenever the move exceeds a configurable threshold.

Tinder Bot Automation cover image

Tinder Bot Automation

Software

Selenium bot that logs into Tinder via phone number auth and auto-swipes left on profiles. Built with undetected-chromedriver to bypass bot detection, OOP architecture, and a terminal menu launcher.

Top 10 Movies cover image

Top 10 Movies

Web

A Flask web app to curate, rate, and rank your personal top 10 movies. Searches the TMDB API for metadata, stores everything in SQLite, and displays movies as animated 3D flip cards.

Turtle Crossing cover image

Turtle Crossing

Software

Arcade-style crossing game with increasing difficulty levels and collision detection.

Details
U.S. States Geography Quiz cover image

U.S. States Geography Quiz

Software

Geography quiz where you name all 50 U.S. states to fill a blank map. Ships as two builds: a turtle original and a tkinter rewrite with callback injection, colour-coded feedback, live score, and a Play Again overlay.

Workout Tracker cover image

Workout Tracker

Software

Log workouts to Google Sheets using plain English. A local LLM parses your session, calories are calculated via the MET formula, and each exercise is written as a timestamped row — no manual entry.

Xavier's Blog cover image

Xavier's Blog

Web

Full-stack Flask blog with user authentication, admin-only post management, rich-text comments, Gravatar avatars, and production deployment to Render with PostgreSQL.

Zillow Web Scraper & Form Bot cover image

Zillow Web Scraper & Form Bot

Software

Automated data-entry pipeline: scrapes rental listings from a Zillow clone with BeautifulSoup, then drives Chrome via undetected-chromedriver to auto-fill and submit a Google Form for every address, price, and link found.

No projects found

No projects match the current filter.