I am a computer science student at NUS, spending this year in Toronto at Trax, a regtech startup building tools for Canadian building codes. I work on the AI side: a system that checks a permit application against a municipality's requirements and flags what it has not answered, for the firms preparing permits and the officials who have to review them.
Before that I was at Perfingo, building the group expenses feature in their app, where the hard part was splitting a bill across currencies and having it still come out exact.
I also co-founded NUS Computing's first AI society, and spent a year as its vice president.
Both jobs come down to the same thing. I like work where roughly right is not good enough.
Things I work with
Python
Node.js
TypeScript
FastAPI
PyTorch
PostgreSQL
LangChain
Redis
Qdrant
React
Celery
Flutter
Work
Trax
Software engineer
Since 2026
Built an AI pipeline that audits building-permit submissions against municipal checklists, with hybrid retrieval over Qdrant and Meilisearch and LLM verdicts cited to the page. Piloted with the City of Kitchener.
Built the eval harness and grading engine with our in-house architect, taking verdicts to 84% accuracy on 25 cases. It replaced spot-checks as the team's release signal.
Moved analytics onto a first-party Snowplow, Redis Streams and PostgreSQL pipeline, so the admin dashboard makes no third-party calls at runtime.
Perfingo
Software engineer
2025
Built multi-currency group bill splitting end to end, one of the app's flagship features, across a Flutter app and a Node, TypeScript and DynamoDB backend.
Built the splitting engine and a materialised net-balance model, so splits sum exactly across 16 currencies and a settlement lookup is one read.
Built a versioned terms and conditions platform, so legal copy ships without an app-store release.
NUS Computing AI Society
Co-founder, vice president
2024-25
Founded the school's first AI society, grew it past 150 members, and ran a 10-person committee across workshops, hackathons and industry partnerships.
Projects
Snitch
Hack the North 2026, 2nd in the GPTZero track
A review tool for remote interviews. It flags moments worth a second look using AI-text detection, a check of answers against the CV, speaking rhythm, and visual canaries only an AI assistant would read. The call stays with the recruiter.
A ResNet-style CNN with a BiLSTM head and CTC loss, reading character sequences of unknown length. Fourteen iterations took sequence accuracy from 35% to 55.6%.
Transformer and GRU sequence-to-sequence models fine-tuned for English and Klingon translation, served through a React and Firebase app with quizzes and flashcards.
Minimart@MWHA token store for Muhammadiyah Welfare Home, where residents earn tokens for good habits and spend them on real items.Hack4Good, 2025LiveCode
HealthrixA triage app and monitoring device for cutting clinic waiting times.NUS Health Hack, semi-final, 2024Code
DargoBotA Discord bot for a Singaporean YouTuber's community, running games and daily questions.Side project, 2023Code
LetsMakan BotA Telegram bot that runs group food orders and splits the cost.Side project, 2024Code
MediBase3A Java CLI for tracking patient records, with duplicate detection and input validation.CS2103T, 2024LiveCode
Habit TrackerA Flutter app for daily habit logging, with streaks and trend charts.Side project, 2024Code
CrimeWhereRandom forest models flagging crime hotspots to help plan patrol routes.LifeHack, 2024Code
PayWiseA mobile app for picking the credit card that maximises rewards per purchase.iNTUition, 2023Code
Outside
I was vice president for cycling at NUS Outdoor Adventures, where I planned and led eight night routes across Singapore for groups of thirty or more, owning route safety and on-road support. Most of my time away from a screen still goes to bikes, trails and mountains.
Open to 2027 new-grad software and AI engineering roles