Projects

Personal projects, client work, and coursework.

In progressFull-stack2026

LoL Survival Tracker

A web app my friends and I use to run a League of Legends challenge. Players spin for champions from a shared pool, losses lead to eliminations, and win streaks earn revive tokens.

  • Frontend built with React, TypeScript, TanStack Query, and Tailwind. Includes spin wheels, a champion pool, a shop, leaderboards, and achievements, and works on mobile.
  • FastAPI backend with a background job that pulls finished matches from the Riot API, checks them against the challenge rules, and records the results. Matches that fail a check are flagged for manual review.
  • Account system with hashed passwords, session cookies, invite links, and lockout after too many failed logins.
  • GitHub Actions CI runs 120+ backend and frontend tests (pytest, Vitest), a production build, and Alembic migration checks.
120+tests in CI
90smatch polling
22achievements
  • React
  • TypeScript
  • Tailwind
  • TanStack Query
  • FastAPI
  • SQLite
  • Alembic
  • Riot API
In progressAI agent2026

Fantasy Football AI Agent

An AI agent for my 12-team fantasy football keeper league. It answers keeper, trade, and draft questions using live data from Sleeper and scraped player rankings.

  • Wrote the tool-calling loop myself using the OpenAI Responses API. The model can choose from 9 tools, and every call is logged.
  • Keeper costs, trade values, and power rankings are calculated in regular Python code, not by the LLM. The model decides which tools to use and explains the results. This logic is covered by 84 unit tests.
  • Built a rankings scraper and name matching that automatically matches about 98.6% of players.
  • Packaged two Windows desktop apps: a developer version that shows the raw tool calls, and a user version with a setup wizard that works with any Sleeper league.
84unit tests
9agent tools
~98.6%players matched
  • Python
  • OpenAI Responses API
  • SQLite
  • SQLAlchemy
  • httpx
  • Tkinter
  • PyInstaller
CompleteBackend2026

FileFlow

A REST API for processing CSV files in the background. You upload a file, get a job ID back, and check the job until the results are ready.

  • Runs on Docker Compose: FastAPI, a Celery worker, Redis, PostgreSQL, and MinIO for S3-compatible file storage. One command starts everything.
  • API key authentication, where each key can only see its own jobs. Results include row counts, column types, null counts, and basic statistics.
  • Files can be stored on local disk or S3, set by an environment variable.
  • 11 integration tests with no mocks, running in CI.
5services
11integration tests
  • FastAPI
  • Celery
  • Redis
  • PostgreSQL
  • MinIO / S3
  • Docker
  • pandas
Client projectData pipelineSep 2024 – May 2025

Hydrogen Workforce Scraper · EPRI

My senior design project, built with a team for the Electric Power Research Institute (EPRI). We built a pipeline that finds hydrogen energy courses offered at universities across the U.S.

  • Built the ETL pipeline in Python with Scrapy and Playwright to scrape, filter, and score course data.
  • Collected course catalogs from 50+ universities, covering 92% of HTML-based catalogs.
  • Built a keyword-scoring system to find gaps in hydrogen energy coursework. EPRI used the reports to help make curriculum decisions.
  • Also worked on PDF parsing, handling JavaScript-heavy pages, and Makefile commands for running the pipeline.
  • Python
  • Scrapy
  • Playwright
  • PDF parsing
  • Make

School projects

Projects from my classes at the University of Delaware.

Spring 2024

Custom Language Compiler

A compiler for a custom language that outputs WebAssembly and RISC-V. Includes parsing, type checking, and code generation.

  • TypeScript
  • WebAssembly
  • RISC-V
View repo
Demo of the custom shell running commands
Spring 2023

Custom UNIX Shell

A UNIX shell written in C that runs programs and supports pipes, I/O redirection, and built-in commands. Checked for memory leaks with Valgrind.

  • C
  • Bash
  • Valgrind
View repo
Binary clock displaying the current time
Systems programming

Binary Clock

Displays the current time in binary. Built for Intro to Systems Programming.

  • C
  • Bash
  • Git
Rate-a-Restaurant drag-and-drop interface
Software engineering

Rate-a-Restaurant

A group project built with React where users rank restaurants with drag and drop. Built for Intro to Software Engineering.

  • React
  • Drag & drop
  • Team project
Live demo
Snake game being played
Intro to CS

Snake Game

Snake, written in Python with PyGame for Intro to Computer Science.

  • Python
  • PyGame

More on GitHub

Other projects and coursework are on my GitHub.

Visit my GitHub