Skip to content

Things I've built

Projects.

I build models and software to answer practical questions. Here are a few projects, what I contributed, and what I learned from testing them.

Recommendation & Machine Learning

H&M personalized recommendations

Individual project · Python, PyTorch, LightGBM

How do you choose a handful of useful recommendations from a large product catalogue? I built an offline system that first finds promising items, then ranks them for each customer.

It uses 31.8 million transaction records and combines nine ways of finding candidates, including shopping history, learned models, and text and image features.

0.034479MAP@12 on a later, untouched week
1.37 millioncustomers in the prediction run

I trained LightGBM LambdaRank on 100,000 customer-week queries, using only information available before each prediction cutoff. For inference, I processed customers in batches to keep memory use bounded.

Read the project write-up

Behavioral personality analytics

Individual project · Python, scikit-learn

I used generated behavioral data to test whether a small set of features could predict personality-related outcomes. I kept model selection separate from the final test.

After comparing 381 configurations, a three-feature Gradient Boosting model reached 0.9651 ROC-AUC on the holdout set.

Flight prices and pricing patterns

Team project · Python, XGBoost

Our team studied 300,153 domestic flight listings. I wrote the code for Experiments 1 and 2 and interpreted the pricing patterns in Experiment 2.

In Experiment 2, we fitted XGBoost to log prices and used partial-dependence plots (PDPs) to examine how modeled fares change as departure approaches, across ticket classes, airlines and routes.

The model estimated a last-minute premium of about 157% for Economy and 23% for Business, comparing the final three days before departure with booking 20–30 days ahead.

Search & software

DocuQuest Agent

Individual project · C++17, CMake

A document question-answering tool with a C++ search layer. I built the index and retrieval logic, then connected the retrieved passages to a language-model client.

The search tests run without network access or API credentials, so I can check the core behavior independently of the model service.

Inside the search layer: an inverted index maps terms to passages, while a custom binary-search-tree multimap manages the index entries. Query groups combine keyword matches before passing the retrieved text to the model.

Lemmings game engine

Course project · C++17

I implemented the actor and world logic for a tick-based 2D game. Each update coordinates movement, terrain, hazards, goals and player-assigned skills on a 20 × 20 grid.

Actor classes manage individual behavior and state changes; StudentWorld coordinates the game rules and object lifetimes. My work is in those two components, within the course-supplied framework and assets.

Mathematical computing

Reconstructing a hidden heat source

Ongoing research · HKU Summer Research Fellowship

I study how to recover a source from blurred, noisy temperature measurements. I compare both the recovered values and the shape, and test when a smaller model can speed up the computation.

In the letter-A demonstration, the letter-trained POD model reduced the measured iterative solve from 5.56 seconds to 48 milliseconds. The research page walks through the models and the recovered shapes.

Urban rail network optimization

Independent research · 2023

I modeled rail routes with constraints on geometry, curvature, feasibility and construction cost. I used analytical optimization for simpler layouts and Particle Swarm Optimization for routes with several intersections. The work was recognized in the S.-T. Yau High School Science Award.

Ongoing projects

Amazon Beauty: TIGER-style recommendations

Ongoing · Working research prototype · Python, PyTorch

Can a model recommend a product by generating its code? I turn product descriptions into short semantic IDs, then train a small Transformer to predict the next product code from a customer’s history. Catalog-aware search maps the generated codes back to real products.

The project includes learned residual quantization, comparisons with SASRec and popularity across multiple random seeds, and time-based evaluation on Amazon Beauty data. A CLI and HTTP API make the trained pipeline usable on a CPU.

This is my implementation and study of ideas from TIGER, with further experiments planned.

Next on the list: a Hull Tactical market-prediction replication, planned for later this semester. Work has not started yet.