Skip to content

Selected work.

01  Projects

/exp  Experience

Carnegie Mellon University

Research Assistant Mar 2026 — Present Pittsburgh, PA
  • Two projects under Michael Tarr and Deva Ramanan: verifying visual chain-of-thought in vision-language models, and investigating positional embeddings in vision transformers.
  • Verifying Visual Chain-of-Thought — curating a dataset and developing interpretability methods to verify whether a VLM's stated thoughts are visually grounded and contribute to its final answer.
  • Positional Embeddings in ViTs — built and validated a controlled study showing RoPE can remain classification-robust while collapsing on dense prediction at high resolution, then causally localized the failure to out-of-range long-range rotary phases.
  • Developed matched from-scratch ablations over positional channels, tokenization, and topology; identified a mechanism-clean hybrid that matches or beats APE on 3 of 4 dense tasks under a no-uniform-method-win framing.

ChargePoint

Software Engineer Intern — Hardware Test Automation Jul 2024 — Present Campbell, CA
  • Built the first automated Outgoing Quality Control (OQC) for ChargePoint's DC fast chargers, on the team's in-house test framework — hardware-in-the-loop over SSH, UART, and RS232.
  • Drives a programmable power supply, discovers the controller over IPv6, then orchestrates commissioning, firmware/image verification, 35+ on-device self-tests, and system service/fault gating.
  • Replaced a slow, manual gate — months of backlog with units uncleared — with a deterministic ~1-hour run (including charging) that clears 10–12 units/day, one unit at a time.
  • Config-driven and resilient — part-number-to-cable mapping, externalized limits, timeout/kill-switch polling, automatic system-reset recovery — and standardized across AC and DC fast-charger lines.
Read the case study →

/work  Projects

2023 — 2026

001

UniMeet

2026

Cross-college .edu social app, now a native SwiftUI iOS client on TestFlight beside the Next.js web app — one Supabase backend, 64 migrations, RLS on every table. APNs pushes drain an append-only notification queue claimed atomically with FOR UPDATE SKIP LOCKED.

SwiftUI · Next.js · Supabase · APNs
002

Dobbify

2026

Evolved from cashback into a fashion decision engine — a deterministic per-product “should I buy this?” verdict, a brand-intelligence layer, and a price-history layer fed by a daily cron behind a pluggable provider interface. A native SwiftUI companion app on TestFlight reads the same Supabase backend.

Next.js · React · Supabase · SwiftUI
003

badminton-mocap

2026

Config-driven computer-vision pipeline that turns badminton match video into player pose, footwork, and shuttle tracking — 10 swappable stages, 175 tests, a custom PyTorch CNN tracking the shuttlecock frame by frame, and recovered motion exported to BVH for standard 3D tools. Elite-level racket-head speeds (38–49 m/s) fall out of the joint kinematics, and players are re-identified across clips with a mean-centered ResNet embedding plus average-linkage clustering.

Python · PyTorch · YOLO11 · MediaPipe · OpenCV
004

Yummerz

2026

Invite-gated iOS app for sharing meal photos with friends, built on an append-only data model — every edit appends a version, nothing is ever truly deleted. The camera-to-cloud pipeline normalizes orientation, resizes to 1600 px, and strips EXIF/GPS before upload, with optimistic posts that survive backgrounding.

SwiftUI · Supabase · Sign in with Apple · WidgetKit
005

Doses

2026

Local-only iOS medication tracker — SwiftData on device, no accounts, no backend, no analytics. Adherence is scored honestly (capped per day so double-dosing can't mask a miss), and interactive widgets, a Live Activity countdown, and notification actions log doses without opening the app.

SwiftUI · SwiftData · WidgetKit · App Intents
006

Shazam4Spotify

2026

iOS app that recognizes ambient music with ShazamKit and auto-adds the ISRC-matched track to Spotify. The OAuth client is the interesting part — PKCE with no client secret, an S256 challenge over a random verifier, single-flight token refresh so concurrent calls share one refresh task, and a method-aware retry policy: 401 refresh-and-retry, 429 Retry-After, 5xx on GET only.

Swift · ShazamKit · OAuth 2.0 (PKCE) · async/await
007

taste-radio

2026

Local-first music discovery that clusters a Spotify library into taste-modes with TF-IDF and HDBSCAN, then fuses Last.fm and ListenBrainz collaborative-filter signals through a consensus scorer weighting cross-source agreement, popularity, and recency decay. A thumbs-feedback loop trains a class-balanced logistic regression online, and its coefficients become a per-candidate score multiplier.

Python · scikit-learn · HDBSCAN · Flask
008

Quick Autofill

2026

Chrome extension that autofills job applications across Workday, Ashby, and react-select forms — defeating React's controlled-input tracking via the native value setter and frame-accurate input/change event sequences, with a shadow-DOM-piercing field scanner and an all-frames iframe pass (214 tests). A two-tier engine resolves common fields locally with zero network calls, backed by a per-domain cache that replays confirmed fills and invalidates on a profile-hash change.

JavaScript · Chrome MV3
009

Chicago Airbnb Segmentation

2026

Team statistics project: a multivariate clustering pipeline over 7,749 Chicago Airbnb listings — PCA, k-means, and full-covariance GMM recovering four latent operating types, with separation validated by a from-scratch MANOVA (Wilks' Λ = 0.024) cross-checked against statsmodels to within 1%. Validation is built from scratch too — Box's M, a 1,000-permutation MANOVA, bootstrap Jaccard stability of 0.93–0.98 — behind an 89-assertion reproducibility audit that fails the build if any cited statistic drifts.

Python · scikit-learn · statsmodels · SciPy
010

SharprAI

2023–24

Chrome extension that captures the active tab as video and streams chunks to the cloud for AI-enhanced playback while you're still recording — sharper, cleaner footage delivered as an HLS stream.

TypeScript · React · Chrome MV3 · AWS S3 · Flask · HLS
011

Ovarian Cancer Histopathology

2023

Fine-tuned EfficientNet-B5 for ovarian cancer subtype classification. Kaggle competition entry with a custom PyTorch DataLoader for slides up to 100,000 × 50,000 px.

PyTorch · EfficientNet