Machine Learning EngineerSingapore

I build AI agents, data systems and software you can try.

At Tata Consultancy Services I architected the data analyst agent in a multi-agent pilot for Johnson & Johnson, after two years as a data engineer on the same account. On my own time I designed, built and launched SplittEZ, an expense app now in public beta on the web, iPhone and Android.

The work, at a glance

From a production reporting path to a 48.5-million-row Spark pipeline, measured rather than described.

  • 48.5M

    five-minute rain-gauge readings from 91 stations, cleaned into Parquet layers and modelled in Apache Spark.

    NUS MSc, team of threeCase study

  • ~3 min <40s

    page load on a React reporting product, after moving rolling metrics into scheduled SQL jobs.

    Johnson & Johnson, at TCSCase note

  • 5

    stages every request to the data analyst agent passes through before an answer is shown.

    1. Classify
    2. Route
    3. Ground
    4. Validate
    5. Execute

    Agentic AI pilotCase note

  • 0

    consistency violations in 15,768 evaluable steps, across 168 fault-injected runs on a MongoDB replica set.

    NUS MSc, team of threeSummary

  • 3

    platforms from one codebase. SplittEZ runs on the web, iPhone and Android, with offline sync.

    Independent productSee SplittEZ

Independent product

Public beta

SplittEZ

Every expense, made clear.

An expense app I designed, built and run on my own. Personal spending, subscriptions and shared bills live in one ledger that keeps what you paid apart from what you actually spent.

React and Node on Postgres, with iPhone and Android builds from the same codebase, offline sync, passkeys and two-step sign-in.

Runs on
Web, iOS, Androidone React codebase, native builds via Capacitor
Works offline
Queue, then syncstale money edits are refused, never merged
Signs in with
Passkeysplus two-step codes and Face ID app lock
Access
Free, open sign-uppublic beta since October 2026
SplittEZ Home on desktop: this month's spending with a 12-month trend, monthly plans, what you owe and what you are owed, and settle-up suggestions
The launch film, made from the app’s real screens. A silent preview plays here; sound starts only when you choose it.

Selected work

Two engineering notes from my work for Johnson & Johnson, shared at the level of decisions only, and three projects from my degrees with full case studies.

  1. ProfessionalData engineeringSanitized case note

    Moving recurring analytics out of the request path

    A React reporting product recomputed rolling metrics such as MAT, MQT and YTD on every user interaction, so the heaviest processing sat directly on the interactive path.

    I moved that computation into scheduled backend SQL jobs and persisted the outputs. Pages now read precomputed results, and the same tables feed month-on-month comparison and downstream reuse.

    Page load, before and after~3 min<40 s

    • SQL
    • Amazon Redshift
    • Airflow
    • React
  2. AcademicNUS MScDistributed MLTeam of three

    Forecasting 30-minute rainfall across Singapore with Apache Spark

    48.5 million five-minute gauge readings from 91 stations, cleaned into bronze, silver and gold Parquet layers and modelled in Spark MLlib. One calibrated classifier gives the probability of more than h mm of rain at a station in the next 30 minutes. I built the first pipeline, the rainfall-pattern analysis and the Stage 1 logistic model; the team built the final random forest.

    PR-AUC at 5 mm on identical 2024 rows (a no-skill model scores 0.008)

    Stage 1 logistic
    0.418
    Final random forest
    0.459

    Read the case study Related education: MSc Data Science for Sustainability

How I design

I treat the interface and the system behind it as one design problem. A screen is only as trustworthy as the numbers, checks and failure states underneath it.

SplittEZ expense detail: you paid S$120, your share is S$40 and S$80 is owed to you, with each person's share listed below
What you paid, your share and what you are owed, kept apart on every expense.
  1. SplittEZ

    One number, on every screen

    Home once showed S$22.03 owed by one person while Friends showed S$0, because only Home counted guests. Now every screen reads one balance function, and totals are derived from expense rows, never stored.

  2. SplittEZ, offline

    Show conflicts, never guess

    Phones queue writes offline and replay them in order. A money edit carries the amount it expected, so a stale replay is refused, and a conflict on shared money is shown to the person instead of merged silently.

  3. SplittEZ, beta

    Switch it off rather than ship it wrong

    On-device receipt reading misread totals. I first turned low-confidence reads into suggestions with per-field undo, then switched reading off, so photos attach without filling in any amounts.

  4. Data analyst agent

    Make the safe path the default

    Answers are built from approved metrics in a governed semantic layer, every generated query is validated before it runs, and code executes in isolated containers.

  5. SplittEZ, analytics

    Privacy is part of the interface

    Usage events store an HMAC of the user ID, keep the day but not the time, hide any group smaller than five and can be switched off by the user.

Experience

Two roles at Tata Consultancy Services, both on Johnson & Johnson Innovative Medicine’s analytics: data engineering first, then machine learning engineering.

  1. to

    Data Engineer

    Tata Consultancy Services · Johnson & Johnson Innovative Medicine

    Primary contribution
    Moved recurring metric and forecasting computation out of dashboards and into scheduled backend SQL workflows with persisted outputs. One React reporting page went from about three minutes to under 40 seconds.
    Also built
    A Power BI budget dashboard that replaced scattered Excel tracking, with row-level security for regional and leadership views. Modernised Southeast Asia Tableau dashboards with stakeholders.
    Team practice
    Standard QA test templates for evidence capture and result logging, and architecture documentation for new team members.
  2. to presentCurrent

    Machine Learning Engineer

    Tata Consultancy Services · Johnson & Johnson Innovative Medicine

    Primary contribution
    Designed the Data Analyst agent in a supervisor-led LangGraph pilot: intent-based routing, a governed semantic layer of approved metrics, query validation and containerised execution.
    Also built
    Automated the reverse-engineering of existing Tableau visualisations from source data. Designed an internal technical-interview platform with coding environments, question banks and structured scoring.

Journey

Education, leadership and a race weekend

Two degrees, a student club I went on to lead, two awards, and a Formula 1 weekend spent trackside as a volunteer.

Education

Leadership

SIM Information Technology Club

I joined the club’s subcommittee in 2020 and was its President for 2022-23.

2020-21 Subcommittee
2022-23 President

Recognition

Beyond engineering

Formula 1

Inside a Formula 1 race weekend

Being selected to support a Formula 1 race weekend gave me a very different view of an event I had previously experienced only from the outside. Trackside, the scale comes from the people behind it: marshals, race officials, safety teams and operations working across the circuit.

Aditya Pandhari trackside during a Formula 1 race weekend
Trackside during the race weekend.

Certifications

All four of Anthropic’s Claude certifications, up to Claude Certified Architect, Professional, plus the Scrum certifications I use in delivery work.

More learning

    The full archive includes Google’s ML and cloud programmes, earlier coursework and the rest of my verified certificates.

    See the full archive

    About me

    AI and ML
    LangGraphPyTorchSpark MLlib
    Data
    SQLPythonAmazon RedshiftAirflowApache Spark
    Product
    ReactNodePostgresCapacitorDocker
    Analytics
    Power BITableau

    I started in data engineering, close to the calculations, schedules and access rules behind analytical products. So when I work on AI systems now, I look past the model to the data it reads, the code it is allowed to run and the checks around it.

    SplittEZ is where I practise the whole job alone: deciding what to build, designing the data model, writing the API and the app, testing money logic until totals always add up, shipping phone builds and keeping a live service running.

    I am studying for a part-time MSc in Data Science for Sustainability at NUS alongside work. Before that I led the SIM IT Club as President, and once spent a Formula 1 weekend trackside as a volunteer.

    Contact

    Get in touch

    I’m open to machine learning, AI and data engineering roles, and to conversations about any of them.

    Résumé on request

    Tell me the role or opportunity and I’ll send a résumé written for it.

    Request résumé by email

    Or email me with the role or opportunity.