Side projects

Side projects

Products I've built outside of work, typically to solve a problem for myself or my family.

Penny

Personal finance app · 2026

Scrolling through Penny's September overview with sample data: totals, overspending, categories, MoM/YoY and a 12-month view
The user problem
Existing budgeting apps offered limited category customization and no view of historical trends. To see how my finances changed MoM and YoY, I tracked everything in spreadsheets: hours of manual work every month.
How it solves it
Penny automates that work. It links real bank and investment accounts through Plaid, sorts transactions into custom categories, shows MoM, YoY and projected spending, and flags categories trending above average.
What I learned
Data synthesis. Aggregating thousands of transactions into views (MoM, YoY, 12-month rolling) that users understand at a glance. User flows. Grouping transactions into trips, recognizing trip spending automatically, and deducting Venmo paybacks from what you paid. Shipped end to end on Vercel and Supabase.
  • TypeScript
  • Plaid
  • Supabase
  • Vercel
Live app ↗GitHub ↗

Pung

Mahjong score calculator · 2026

Pung on a phone: choosing Chinese (MCR) rules, tapping in a hand, and getting a 44-point score with each scoring pattern explained
Live app
The user problem
My family began learning MCR mahjong, where a hand needs at least 8 points to win. Scoring is complex, and some players (sorry, Mom!) needed help confirming whether a hand qualified.
How it solves it
Players enter their hand and Pung calculates the score, explains each scoring pattern in English and Chinese, and determines payouts. Hong Kong rules are also supported.
What I learned
Designing for different users. Family members new to MCR shaped bilingual support, plain-language explanations, and a mobile-first flow. Edge cases. The rulebook has many (kongs, last-tile wins, overlapping patterns), so I defined each as a requirement and validated it against real hands.
  • TypeScript
  • React
  • Vite
Live app ↗GitHub ↗

Live Lounges for Twitch

Product capstone · Ivey Product Society · 2023

Clicking through the Live Lounges prototype: browsing lounges, creating one, and accepting a join request
The user problem
Small and mid-sized streamers struggle to grow their communities on Twitch.
How it solves it
Live Lounges let streamers co-stream in shared spaces, combining their communities so they can grow together.
What I learned
User empathy. Interviews with 5 streamers surfaced their real pain points, and I iterated until the concept was a frictionless solution they would actually want to use. I then took it from wireframes to a PRD and final pitch.

Clibs

Discord bot · 2022

The user problem
Important messages and clips get lost in busy Discord channels.
How it solves it
A Discord bot that saves messages and clips under tags, so users can retrieve them with one command.
What I learned
Designing for adoption. Users would only adopt the bot if commands were short and memorable, so I treated the command set as the core user experience.
  • Discord.js
  • Node.js
  • MongoDB
GitHub ↗Demo video ↗