Projects

A curated collection of technical and consulting work that reflects how I solve problems and ship value

Featured Projects

Job Application Agent (September 2026)

Job Application Agent (September 2026)

A Python agent that takes a job posting link, fills the application form in a real browser from your profile, and hands it back for you to submit. It can't submit, by design. Claude plans what goes in each field, while deterministic Playwright code reads the form through the accessibility tree, fills it, and reads every value back to confirm it stuck. Code-enforced safety rules mean it never makes up facts like work authorization, GPA, or demographics. It has 91 offline tests and has been run against four real applicant tracking systems, including Rippling, Greenhouse, and Workday.

PythonClaude APIPlaywrightPydanticpytest
Nudge (Summer 2026)

Nudge (Summer 2026)

A PWA for keeping track of the people you care about, which sends a real push notification when it's been too long since you talked to someone. Built with React, Vite, and Supabase: magic-link and Google auth, Postgres with row-level security, and a daily pg_cron job that calls an edge function to send VAPID-signed Web Push messages. A service worker delivers them even when the app is closed and the phone is locked. Includes an iOS home-screen install flow and Playwright scripts that verify a real notification arrives end to end.

ReactViteSupabasePostgreSQLWeb PushPWA
Geometry of LLM Refusal (April 2026)

Geometry of LLM Refusal (April 2026)

Independent research (with 3 teammates) investigating whether LLM refusal behavior is mediated by a single direction or a cone in activation space. Extracted refusal directions in PyTorch across 4 harm categories on Qwen-1.8B-Chat using SORRY-Bench prompts, then used activation steering to identify layer 14 as the strongest refusal layer, achieving 84-96% cross-category ablation bypass rates and 0.735-0.892 cosine similarity, supporting a conic subspace framing over a single-direction hypothesis.

PythonPyTorchHugging FaceActivation SteeringInterpretability
Unveil AI (April 13th, 2025)

Unveil AI (April 13th, 2025)

Built at Google DevFest WashU 2025, UnveilAI is a full-stack platform that helps developers understand unfamiliar codebases using Google Gemini and Bland AI. Finalist among 42 teams, the app lets users upload GitHub repos, receive line-by-line explanations, ask questions about specific files, and even get a phone call from an AI 'senior engineer' that walks them through their code.

Next.jsFastAPIGoogle GeminiBland AITypeScript

Other Projects

Court Vision (April 28th, 2025)

A real-time sports analytics tool that identifies profitable bets and market inefficiencies using custom statistical models on live odds data. Built with Python and Streamlit, featuring algorithms for win probability and parlay outcome simulation.

PythonStreamlitThe Odds APIPandas

Blendify (April 23rd, 2025)

A full-stack Spotify playlist generator that recommends tracks based on a seed song's genre and audio profile. Features OAuth login, real-time search, personalized recommendations, and direct playlist creation in users’ Spotify accounts.

Next.jsTypeScriptSpotify APITailwindCSS

Socket.io Multi-Room Chat App (March 31st, 2025)

A real-time multi-room chat application with support for private messaging, admin controls (kick, ban, unban), password-protected rooms, and profanity filtering. Built using vanilla JavaScript, Node.js, and Socket.io with a custom room management system and command-based chat bot for the global lobby.

Node.jsSocket.ioJavaScriptHTML/CSS

Collaborative Calendar App (March 19th, 2025)

A secure, full-stack calendar web app that supports user signup, login, event management, and event sharing. Built using vanilla JavaScript (AJAX) and PHP, with robust session handling, CSRF protection, and SQL injection prevention via prepared statements. Users can add, edit, delete, and share events across accounts, all without page reloads.

JavaScriptPHPMySQLAJAXHTML/CSS

JavaScript Calculator (March 5th, 2025)

A fully client-side calculator built with vanilla JavaScript, HTML, and CSS. Handles real-time arithmetic operations based on user input, with dynamic result rendering and form state updates. Implements radio-button based operator selection and input event listeners for seamless, responsive interaction—demonstrating frontend reactivity without the need for external libraries or frameworks.

JavaScriptDOM ManipulationFrontendHTML/CSS

JavaScript Weather Widget (March 5th, 2025)

A responsive JavaScript weather widget that fetches real-time data from a public API and displays local conditions, humidity, and multi-day forecasts. Implements dynamic DOM manipulation, image rendering based on weather codes, and modular CSS for a clean, accessible interface. Includes a manual refresh button and asynchronous data handling via `fetch` for a seamless user experience.

JavaScriptFetch APIDOM ManipulationAsynchronous

Batting Average Analyzer (February 24th, 2025)

A command-line Python tool that parses historical baseball box scores and computes batting averages across an entire season. Uses regex to extract structured player stats from unstructured text logs, and applies object-oriented principles to aggregate performance data and output a sorted leaderboard. Built to demonstrate precision in text parsing, CLI design, and statistical computation.

PythonRegexCLIData Processing

Secure News Website (February 17th, 2025)

A full-stack PHP web app that enables users to register, post stories, comment, and engage with trending content. Built with session-based authentication, CSRF protection, and SQL prepared statements to guard against common web exploits. Features include story/comment editing and deletion, a dynamic likes system, and a trending posts module ranked by user engagement. Backed by a MySQL database with relational integrity and foreign key constraints.

PHPMySQLSessionsCSRFWeb Security

Secure File Sharing System (February 3rd, 2025)

A multi-user PHP web application for secure file upload, viewing, and deletion. Implements session-based login, per-user storage isolation, and regex validation for file/user safety. Designed with FIEO and basic access control in mind, ensuring users can only interact with their own files. Includes custom account creation, a persistent username registry, and MIME-type enforcement to safely render uploaded content.

PHPSessionsFile I/ORegexAccess Control

PHP Calculator (January 27th, 2025)

A lightweight PHP web app that performs basic arithmetic operations using GET requests. Implements form-based user input and radio button controls for real-time addition, subtraction, multiplication, and division—complete with error handling for edge cases like divide-by-zero. Built as an early exploration of server-side scripting, input validation, and user-driven computation.

PHPWeb FormsGET RequestsInput Handling

MockOS: C++ File System Simulation (Fall 2024)

Collaborative C++ static library simulating a basic file system with command-line operations. Implemented design patterns like Visitor, Factory, and Proxy to manage files, enforce access control, and handle commands such as ls, touch, cat, and macro operations.

C++Object-Oriented ProgrammingDesign PatternsCMake

Ginemenasaurus (Summer 2024)

A full-stack gym workout generator built with React and Tailwind CSS, offering dynamic, science-based workout routines tailored to user-selected goals and muscle groups. Uses a custom-built exercise engine that draws from a structured dataset of compound and accessory movements, with support for rep/tempo/rest schemes. Features a clean, mobile-responsive UI with interactive animations and personalized progression tracking.

ReactTailwind CSSViteJavaScript

Todo List (Summer 2024)

Responsive web app for task management with localStorage persistence and full CRUD functionality. Built with React and Vite using modular components and custom CSS.

ReactViteJavaScriptlocalStorage

Housing Price Predictor (Spring 2024)

End-to-end data science project to predict housing prices in Melbourne using 13,000+ real listings. Cleaned and explored the data, engineered new features, and tested multiple models (Linear Regression, KNN, Decision Tree, Random Forest). Tuned hyperparameters with GridSearchCV and evaluated performance using RMSE and R². The best model—Random Forest—achieved strong results (RMSE: $289K, R²: 0.83).

Pythonscikit-learnMachine LearningRegression