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.
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.
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.