SenpilotSoftware Engineer Intern, New York
Jan 2026 - Apr 2026
Python · TypeScript · Temporal · GCP · pgvector · Redis · Braintrust
I build backend and ML infrastructure.
Computer Engineering student at the University of Waterloo, class of 2028. I design things as much as I build them.
To me, engineering is a way of making everyday life a little easier. The things I build should work well, look good, and feel good to use.
I stay curious, keep learning, and am usually chasing the next problem worth solving.
Jan 2026 - Apr 2026
Python · TypeScript · Temporal · GCP · pgvector · Redis · Braintrust
Sep 2024 - Dec 2024May 2025 - Aug 2025
Python · JavaScript · React · LangGraph · PyTorch · RAG · Vector search · LLM evals
Jan 2026 - Mar 2026
Python · TypeScript · AWS · SQS · Lambda · Terraform
Zero-copy shared memory object store for Python, written in Rust
Python workers normally hand objects to each other by pickling them, and that gets expensive fast. Seal keeps objects in mmap-backed shared memory segments so every process reads the same bytes without copying anything. A supervisor owns the segments and workers attach to them. Refcounts live in a bitmap, so a worker that dies halfway through a write cannot corrupt a segment or leak one. I checked the concurrency two ways: loom model checking on the Rust side, and a chaos injector that killed 10,000 workers mid-run. Zero leaked segments.
Rust · PyO3 · mmap · loom
WAT.ai · Software Developer
Agent observability harness
TRACE is the harness WAT.ai uses to see what an agent actually did on a run, step by step. I own the agent runner. It is built on Python Protocols, so the model, the tools, and the trace backend can each be swapped out without touching the run loop. Every run emits OpenTelemetry and OpenInference spans, so traces show up in whatever tooling the team already has open.
Python · OpenTelemetry · OpenInference
Ranks GitHub profiles against a job description
Give it a job description and a candidate's GitHub profile, and it tells you how well they line up. It reads through the candidate's public repos, looking at how active they are, how clean the code is, and whether anything is documented, then asks Gemini to score all of that against what the role asks for. The Flask backend exposes the analysis as a REST API, the Next.js frontend consumes it, and uploaded resumes go into MongoDB GridFS.
Team project with Jeffrey Huang and jordyo40.
Next.js · TypeScript · Flask · MongoDB · Gemini · GitHub API
Turns YouTube videos, PDFs, and voice recordings into study notes
Drop in a PDF, paste a YouTube link, or record yourself talking through something, and NoteBuddy hands back structured study notes. The React frontend talks to a Flask backend that handles the uploads and the summarization, with MongoDB and JWT auth behind it.
React · Flask · MongoDB · JWT