Selected Work
FinSentinel
Real-time transaction risk detection for banks: Flink rules raise alerts, and AI agents investigate each one and draft a case report for a compliance analyst.
Job Hunt Agent
LangGraph supervisor coordinating narrow LLM specialists over ~2,000 job listings a day.
AI Detective
RAG over an adversarial corpus where three of eight documents are topical decoys, so similarity search actively misleads.
AI Usage
macOS menu bar app for Claude subscription quota, reading the desktop app's own cookie store.
What to Eat
Weekend dinner decisions for two people. My first TypeScript project, built to learn Next.js.
Adversarial Robustness Harness
A red team and a blue team co-evolve against a frozen model, producing a measurable robustness curve.
Notes
One missing try-with-resources
LangGraph4j's database checkpoint savers borrowed a JDBC connection for every checkpoint read or write and never gave it back. How I found it with a connection pool and leak detection, proved it outside my own code, and got the fix released upstream in 1.9.4.
Where the bottleneck went
A 3G fibre plan that topped out at 940 Mbps, and where the bottleneck moved each time I removed one: the WAN port, the phones' radios, a crowded channel, a gigabit cable, an access point that wasn't configured the way its app said, and finally a wall socket I hadn't thought to use.
Two Kinds of LLM Caching, and When Each One Actually Fires
Prompt caching and response caching solve different problems, and both fire under narrower conditions than the marketing suggests. One of my own tests could only ever report zero, and after a move to gpt-6-luna the default setup cost more than no cache.
LangGraph Durable Execution
A ground-up explanation of how LangGraph persists state, resumes work, travels through time, handles parallel writes, and supports human-in-the-loop.
Experience
2026-03 – 2026-08
ST Engineering · AI Engineer Intern
Let non-technical users drive 6 existing AI microservices via natural language; LangGraph intent routing plus a versioned evaluation harness.
2024-10 – 2025-08
DBS Bank · Tech Lead
Led a team of 4 delivering a pre-trade check engine across 4 regional banking systems, end to end from requirements to production.
2023-04 – 2024-09
Trust Bank Singapore · Senior Backend Engineer
Decoupled services with an event-driven architecture; built a production log monitoring dashboard; mentored new hires and ran code reviews.
2019-03 – 2023-03
OCBC Bank · API Developer
Primary technical point of contact for the OCBC Enterprise API platform, onboarding dozens of enterprise partners across 4 regions.
2017-07 – 2019-02
Avanade · Software Engineer
Government project; built RESTful services with Spring / Spring Data JPA.
2016-10 – 2017-03
OCBC Bank · API Developer Intern
Open API platform; customized OAuth2 flows.
Education
National University of Singapore — MTech, Artificial Intelligence Systems (2025 – Present)
National University of Singapore — Graduate Diploma, Systems Analysis (2016 – 2017)
Zhejiang University of Technology — BEng, Computer Science / Digital Media Technology (2012 – 2016)