My TechJam 2026 shopping copilot scored 9.03× the supplied weak-BM25 baseline: 0.963 vs 0.107 across 200 public sessions.
Master of Computing student at NUS, Singapore. I build LLM agents, retrieval-augmented generation, and recommender systems. Open to a part-time ML/AI engineering internship in Singapore, starting now.
A shopping assistant that asks the right question before it recommends. It picks the question that removes the most uncertainty about what you want, then re-ranks after every answer. Built in pure standard-library Python. Scored 0.963 on the organisers' benchmark, 9.03× their weak-BM25 baseline, across 200 public sessions. 203 tests, and CI reproduces this result on every push.
A chess variant where a piece can occupy two squares at once, until it's captured. Capturing it collapses it to one square, using a shared random seed so both players see the same result. Built and deployed in React and TypeScript, peer-to-peer over WebRTC, with no game server needed after matchmaking. Tested end to end, including both outcomes of a collapse. Play it live.
A Bayesian demand-forecasting model that answers a stocking question: how much inventory to hold, and what it costs to get wrong. Built in PyMC on simulated e-commerce data, sharing statistical strength across related products instead of treating each one alone. Checked model health with standard MCMC diagnostics, R-hat and effective sample size, before trusting the output. Turned the forecast into a stocking decision with newsvendor optimisation, priced for the cost of overstocking versus running out.
An interactive platform for learning data structures. 19 animated visualisations, covering arrays through graphs, plus sorting and searching. Includes tutorials, progress tracking, games, and user accounts (Firebase). Built and deployed in React 18 and TypeScript. Open the live application.