Projects

Things I've built or helped ship—side projects, hackathon work, and experiments. Each write-up is meant to explain the why, not just the what.

SpartaHack 9 (2024)

Visit site

Why it mattered

Hackathons succeed when people trust that applications, schedules, and day-of details are accurate and easy to find. We wanted one place for SpartaHack 9 so attendees weren’t piecing things together from scattered emails and group chats—and so the community could form before anyone arrived on campus.

What we shipped

I helped ship the public site for Michigan State’s annual hackathon: applications, updates in the weeks leading up to the event, the weekend schedule, tracks, FAQs, and sponsor visibility—all framed so first-timers and returning hackers alike knew what to expect.

Key decisions

  • Led with a clear application path and obvious next steps so curiosity wasn’t lost to friction.
  • Organized content around the timeline (before vs. during the weekend) so the site stayed useful after someone signed up.
  • Made tracks, sponsors, and “what to expect” easy to scan so people could plan projects and feel included early.

What I'd do differently

I’d agree earlier on a lightweight content freeze and ownership for last-minute changes—schedule tweaks always happen, but a clearer process would have cut down churn for the org team.

Budget App

Visit app

Why I built it

I used to track spending in Notion and built an API that my iPhone automations could call to log each transaction—but capturing every purchase that way still took time, and I had to remember to do it right after I spent anything. I also tried a spreadsheet, where pulling in transactions meant copying them one by one. I wanted to get rid of that manual capture entirely and still get intelligent summaries without the overhead, so I built a system that pulls and categorizes for me automatically.

What I built

A full-stack finance app that uses Plaid to pull transactions automatically, Playwright to handle sources Plaid couldn’t reach, and Azure OpenAI to categorize spending and surface insights — all without me touching a spreadsheet. Now used by 5+ friends and family.

Key decisions

  • Chose Plaid over manual CSV imports for reliability, but added Playwright as a fallback for institutions Plaid doesn’t support.
  • Used Azure OpenAI over rules-based categorization because spending patterns don’t fit neat buckets — the model handles edge cases much better.
  • Kept the stack simple and self-hosted to avoid recurring infra costs for personal use.

What I'd do differently

I’d invest earlier in data normalization across sources — reconciling Plaid and Playwright outputs cleanly took more work than expected.