Local-first AI companion
Mana
A Windows desktop assistant that listens, replies out loud and reads the screen, with every model running on the local machine.
100% of default inference running on-device
Data and AI engineering
I build data pipelines, train the models that run on them, and keep both alive in production.
Put this site together, including a demo on the Veritarach page built from recorded model output.
Every project below has its own page with the architecture, the numbers, and the parts that went wrong. Source is public except for the internship work.
May to Aug 2026
Worldtech
Worked on a guest messaging platform that hotels use to handle conversations across several channels from one place. My work covered the data layer, the retrieval integration behind suggested replies, and the operational screens staff use day to day. Everything shipped as reviewed pull requests into a team codebase that was already in production with paying clients.
May to Aug 2019
Centre for Healthy and Sustainable Cities, NTU
Made the art and 3D models for Xbox Kinect games that get older adults exercising, built for I-SING, the International-Singapore Intergenerational National Games. I-SING is an exergaming programme run with Senior Activity Centres across Singapore, studying whether game-based exercise improves physical health, cognitive function and social wellbeing in adults aged 65 and over. The competition had gone international the year before I joined, with participants in Finland, France, Japan and Taiwan. Art for this audience carries its own constraints. Players stand a few metres back from a screen, so shapes and targets have to read clearly at that distance to someone who has never played a game before.
Graduated 2026
James Cook University
Coursework across statistics, machine learning and data systems, with the final placement spent building the platform above rather than writing about one.
Graduated 2019
Nanyang Polytechnic
Studio training in art and game production, with the industry placement spent on the Kinect games above.
Moving data between systems without losing any of it, on a schedule nobody has to babysit.
Fine-tuning, dataset construction, and the evaluation work that decides whether a metric means anything.
The interfaces and services that make the data layer usable by somebody other than me.
I came to this from game design. My diploma was mostly art and production, but there was coding in it, and that turned out to be the part I wanted to keep doing. I had always been good with numbers, and I had been interested in code since I was young, so I took the chance and went back for a data science degree.
The placement at the end of that degree put me on a hotel messaging platform that real hotels use every day. That was the first time my code had users who had no idea I existed, which changes how you think about a schema migration.
Most of what I build outside work comes from wanting a thing to exist. A tracker that could tell me which projects were actually gaining ground. A voice tool that gives useful feedback without a clinical appointment. An assistant that runs on my own machine. They are all small enough to finish and complicated enough to teach me something.
The habit I care most about is checking my own results. On the text detector I built a second, separate evaluation harness specifically to try to break the first one, and it worked, which was annoying and much more useful than the original score. I would rather find that myself than have a reviewer find it for me.
Away from all this I came out of game art and it still shows. I play a lot of FFXIV, and I stream on Twitch when I can hold a schedule together. It is also most of the reason Mana has a face at all, because I wanted to know how close a local assistant could get to feeling like a person rather than a prompt box.