Enlist

Software engineer at NCS in Singapore. Retrieval pipelines, agent tooling, and the backend work that decides whether any of it survives contact with real users.
Six years from simulation coursework to production AI, most of it in Singapore.
Most AI projects don't fail at the model. They fail at retrieval quality, evaluation, and the boring integration work nobody scoped. That's the part I do.
Python and C# services that hold up under load, with the schemas and tests to prove it.
If I can't show you the citation and the eval score behind an answer, it isn't finished.
Agents draft and propose. Anything consequential waits for a person to approve it.
Read them in order — each one is the reason the next made sense.




Client details stay vague on purpose. The engineering doesn't.
A retrieval-augmented assistant over years of internal documents. The first version answered fluently and wrongly. Fixing that meant better chunking, a reranking pass, and refusing to answer when retrieval came back thin.
Every prompt change used to be a debate. Now it's a run. A graded question set, retrieval hit-rate, and citation accuracy, checked on every merge — so a change that helps one answer and breaks four never reaches anyone.
My degree was in real-time interactive simulation — C++, frame budgets, and code that has 16 milliseconds to be correct. Two years as a teaching assistant at DigiPen made me explain all of it out loud, which is still the fastest way I know to find what I don't understand.
The working stack behind the projects, grouped by where it earns its keep.
Python, FastAPI, C#, .NET, REST APIs, schemas, and service-level testing.
LangChain, Azure OpenAI, RAG, chunking, reranking, tool calling, and approval gates.
pytest, graded eval sets, citation checks, regression gates, and Azure Pipelines.
C++, React, TypeScript, real-time simulation, profiling, and performance budgets.