Software, UX research,
and finance — in one toolkit.

I'm Flora Hang, a UBC Computer Science + Psychology graduate ('26) and CFA Level II candidate based in Vancouver, BC. I design and build products end to end: from hypothesis and experiment, to prototype, to production.

React / TypeScript Python / SQL HCI & UX Research Power BI / Excel modelling CFA Level II Candidate

Projects

Selected work across engineering, research, and finance.

Launching Nov 2026 · Engineering + Product

Score to Sound

A practice app for singers: AI reads sheet music from PDFs or photos — staff or numbered (jianpu) notation — into playable notes, renders the score in the browser, and plays the accompaniment on a sampled piano, following tempo, dynamics, and phrasing. Singers can transpose to any key, slow the tempo, mute parts, start from any note, and fix misreads in a built-in editor.

Deploying on Cloudflare (Workers + D1 SQL database) with email/Google sign-in and a song-credit model — every new account gets one free song.

Stack: React, JavaScript, VexFlow, Tone.js, Claude API, SQL (Cloudflare D1), Cloudflare Workers

Visit the app
Engineering · Live

Happenings — Live Vancouver Event Map

A map-first event finder for Vancouver-area cities, live on GitHub Pages. A Node.js script pulls the Ticketmaster Discovery API for the next 60 days, de-duplicates and filters listings, and a GitHub Actions workflow refreshes the feed hourly. Features clustered map pins, category filters, keyword search, saved events, and add-to-calendar with correct Vancouver time zones.

Designed in Pixso with accessibility built in: keyboard navigation, visible focus states, and screen-reader labels.

Stack: JavaScript, HTML/CSS, Node.js, GitHub Actions, Ticketmaster Discovery API, OpenStreetMap

Visit the live map Source code
UX Research · CPSC 444, UBC

Reducing Student Food Waste Through UX Research

For Advanced HCI Methods, our team studied why university students waste food — then ran a within-subjects experiment (N=10) on a food-waste management app to answer two design questions: does grouping the pantry by expiry status beat grouping by food type, and which notification strategy do users actually prefer?

17.6s vs 34.0sTime to find expiring items: expiry-grouped vs food-type layout
p = .003, d = 1.13Statistically significant, large effect size
Daily #1Users ranked daily summaries & 3-days-before alerts highest

My contributions: originated the concept and wrote a user story; wrote the hypotheses and defined the experimental conditions, independent/dependent variables; drafted the task protocol; built the lo-fi and medium-fidelity prototypes used for A/B testing (including the rationale for the med-fi approach); collected data from participants; recorded the prompts used to generate prototypes.

Methods: formative field study (N=5), cognitive walkthrough, within-subjects A/B experiment, Qualtrics surveys, paired-samples t-test.

Takeaway: organizing the interface around the user's goal — not the food ontology — cut task time nearly in half, and became the recommended default layout.

About

A little background.

Engineering + research

B.A., double major in Computer Science and Psychology from UBC — completed in three years, Dean's List. Coursework across software engineering, databases, algorithms, machine learning, visualization, and HCI methods, plus research methods and behavioural data analysis.

Finance

CFA Level II candidate (May 2027). I build three-statement models, do financial statement analysis, and practice reconciliations and accruals under one-on-one mentorship from a practising accountant. DataCamp Data Analyst (Power BI) track completed.