Caden Sun
Mathematics, class of 2030
Click to openTap to open
Contents
About me
Hi! I’m Caden, a mathematics student at the University of Waterloo, graduating in 2030. I’m interested in software engineering, machine learning, and AI.
This summer I built an AI calling agent at ProCogia. Now I help Professor Jimmy Lin’s Castorini group with retrieval research, and in winter 2027 I join Bits In Glass as a machine learning engineer.

Experience
Machine learning engineer at Bits In Glass
A global boutique technology firm that designs, builds and runs enterprise AI, with the data, processes and platforms around it.

AI engineering intern at ProCogia
At ProCogia I built an AI calling agent and was responsible for designing and implementing the system behind it. It was my first time working in Vancouver, and I got to see all the cool views and mountains. My favourite part of the city was Kitsilano.




Research assistant to Professor Jimmy Lin
Testing multi-stage retrieval on TREC benchmarks in the Castorini group, from BM25 to listwise LLM reranking. Folded 24 near-duplicate tests into 5 suites merged into Pyserini, and fixed a caching bug that forced a 2 GB download on every fresh install.
Python, BM25, LLM reranking, TREC

ML engineer at Wat Street
Volatility forecasting with Waterloo’s quantitative finance team: a pipeline from raw S&P 500 OHLCV data to 10 engineered features, and the PyTorch module that feeds a graph attention network into an LSTM across 500 stocks.
Python, PyTorch, pandas, NumPy

Projects
Flight Price Predictor

An XGBoost model that prices round-trip flights on 200+ routes across 55+ airports. It misses by 14.6% on average on held-out trips, against 17.1% for a linear baseline. The pipeline collects about 4,000 offers a day.
Live demo for Flight Price PredictorGitHub for Flight Price Predictor
Cat Classifier
A ResNet-18 fine-tuned on 1,722 photos decides whether a cat is a ragdoll, right in your browser. Answering no every time scored 77%, so a class-weighted loss ended that shortcut; a from-scratch baseline reached only 0.48 F1.
- F1
- 0.832
- Precision
- 0.800
- Recall
- 0.867
Chess Bot
Negamax search with alpha-beta pruning, iterative deepening and quiescence search, a Zobrist-hashed transposition table and a tapered evaluation. A Flask API on Vercel answers a React board with a live evaluation bar.
World Cup Goal Predictor

Linear regression in NumPy with hand-derived gradient descent, predicting the goals in a match. It barely beats guessing the average, and loses on later tournaments: it learned 2.9 goals a match, and the next eight years averaged 2.5.