Tu Phan · Machine learning · Software · Platform

I build reliable software, from first commit to store release.

Six years across three kinds of work: machine learning that runs in production, full-stack and mobile products, and the cloud platform underneath them. I am co-founder and CTO of Body.Scratch, where the whole technical stack is mine to run, and ZinZinTech is my own registered studio, where I design, build and ship apps end to end.

Open to part-time engineering roles in the Netherlands. No sponsorship required.

About

Profile

AI engineer with six years of international experience across six countries. I work at three layers of the same problem: the models, the product around them, and the infrastructure they run on. Most recently that has meant computer-vision models serving live traffic, a Java and Python backend, and a Google Cloud platform I took over and have run single-handed since. I also run ZinZinTech, my own registered studio, where I build and ship the apps I want to exist.

What I do

Four areas

Machine learning in production

Computer vision and NLP models that serve real traffic: pose estimation and gesture classification behind gRPC and TensorFlow Serving, gradient-boosted models scoring live sessions, and an LLM assistant for teachers whose per-student access checks sit inside its own tool layer.

  • PyTorch
  • TensorFlow Serving
  • ONNX
  • Vertex AI
  • XGBoost

Cloud platform and DevOps

I took over a Google Cloud platform and have run it single-handed since: fourteen Terraform stacks, a GKE cluster, nine Helm charts of my own, and the self-hosted middleware on top of it — RabbitMQ, Keycloak, LiveKit, TensorFlow Serving. Cost is part of the job: spot pools, node pools that scale to zero, committed-use discounts, and a billing kill-switch I wrote.

  • GCP
  • Kubernetes
  • Terraform
  • Helm
  • Cloud Build

Full-stack and mobile

Production backends in Java with Quarkus and Python with FastAPI, React and TypeScript front-ends, and one Flutter codebase shipped to five platforms through six separate store review processes.

  • Java
  • Quarkus
  • FastAPI
  • React
  • TypeScript
  • Flutter

Data and pipelines

Building datasets when none exist: capture tooling for synchronised multi-camera recording, annotation pipelines, and terabytes of video uploaded to object storage with a queue carrying the recording jobs. Earlier, Spark, Kafka and Elasticsearch behind credit-risk and fraud models we built and evaluated.

  • PostgreSQL
  • RabbitMQ
  • GCS/S3
  • Spark
  • Kafka

Experience

Selected experience

Co-Founder & CTO

2023 – present

Body.Scratch B.V. · Eindhoven, Netherlands

The technical side is mine end to end: the Google Cloud platform, the production API, the computer-vision stack, and the data pipeline behind it. My co-founder runs business and design.

  • GCP
  • Kubernetes
  • PyTorch
  • Java/Quarkus
  • FastAPI

AI Engineer (freelance)

Oct 2025 – Feb 2026

Commercial client, under NDA

Video copyright-detection system: transformer embeddings indexed for similarity search over a reference library, with temporal alignment to locate the matching segment. Ran on the client's on-premise Windows GPU server, with real users.

  • PyTorch
  • FAISS
  • Swin/ViT
  • CLIP

Computer Vision Researcher (MSc thesis)

2022 – 2023

Fondazione Bruno Kessler (FBK) · Trento, Italy

Thesis: Trajectory-based Anomaly Detection for Video Surveillance Analysis. Detecting people in video, then clustering their trajectories to flag anomalous movement. The work was merged upstream into the PROTECTOR video-analysis platform.

  • PyTorch
  • Anomaly detection
  • Object detection
  • Trajectory clustering

Software Engineer

2021 – 2022

PipePredict · Darmstadt, Germany

Map-based web application for predictive maintenance of water pipe networks.

  • React
  • D3.js
  • TypeScript

AI R&D Team Lead

2019 – 2020

Tima Group · Hanoi, Vietnam

Led 5 engineers building OCR and chatbot systems plus credit-scoring and fraud models.

  • TensorFlow
  • Spark
  • Kafka
  • scikit-learn

AI Researcher

2018 – 2019

JAVIS · Hanoi, Vietnam

Automated 2D and 3D CAD generation with image processing.

  • Image processing
  • CAD automation

Research Assistant

2018

NTU Singapore · MAGIC

I built both halves of a dynamic 3D city-streaming system: the streaming server (PHP, Yii2) and the Unity client — 120 of that repository's 132 commits — a RabbitMQ consumer inside the game engine, loading asset bundles asynchronously and evicting them as the camera moved away. CityGML, level-of-detail scheduling, Berlin and Amsterdam. Two publications, one best paper.

  • PHP/Yii2
  • CityGML
  • Unity clients

Research Assistant

2016 – 2018

SoICT, Hanoi University of Science and Technology · Vietnam

Combinatorial optimisation for vehicle routing and share-a-ride problems — GRASP and adaptive large neighbourhood search, in a Java optimisation library. Two publications, one as first author, presented by me.

  • Java
  • Optimisation
  • GRASP / ALNS

Research Intern (JASSO scholarship)

2017

Nakagawa Laboratory ↗, Tokyo University of Agriculture and Technology · Japan

Deep learning for recognising handwritten characters in historical Japanese books, in Prof. Masaki Nakagawa's handwriting-recognition group.

  • VGG
  • Inception-v4
  • Handwriting recognition

Code

Selected work

Public repositories. The private ones — the Body.Scratch and ZinZinTech application source, and client work under NDA — are not linked here, but I can walk through any of them.

qa-rewards-abstractive-summarization

Reimplementation of Gunasekara et al., Findings of EMNLP 2021: reinforcement learning with question-answering rewards for abstractive summarisation. GPT-2 and PEGASUS on XSum, trained on a Slurm cluster. One model scoring another model's output — and the score means nothing until it agrees with a person.

  • PyTorch
  • RL/PPO
  • Transformers
  • Slurm

parallel-datamining-algorithms

k-means in C and C++ with hybrid MPI and OpenMP: 14.1x speed-up at 88% efficiency on 16 processes, timed with MPI_Wtime.

  • C
  • C++
  • MPI
  • OpenMP

football-dialogue-assistant

Rasa dialogue system over live football data — fixtures, team information and player statistics from an API, with speech input.

  • Rasa
  • NLU
  • MITIE

multi-domain-machine-translation

Domain-adaptive neural machine translation experiments, with the Slurm batch scripts that ran them.

  • Transformers
  • PyTorch
  • Slurm

transformers-text-recognition

Transformer-based text recognition, trained on a university GPU cluster.

  • PyTorch
  • Transformers
  • Slurm

ocr-significance-testing

Significance testing for comparing scene-text-recognition models: is the gap between two systems real, or is it the test set? Built on the Scene Text Telescope reference implementation, credited in the repository.

  • Statistics
  • Bootstrap / permutation
  • OCR

DINO — detection experiments on a GPU cluster

One of seven detection codebases I trained and fine-tuned in 2022-2023 on a shared university cluster: Slurm jobs that build the model's custom CUDA operators inside the job itself, fine-tune from a released checkpoint, and log to Weights & Biases. The model and the original code are the upstream authors'; the README says exactly what I changed.

  • PyTorch
  • Slurm
  • CUDA
  • Weights & Biases

protector-project/VideoPlatform — merged upstream

A merged pull request in a public repository I do not own: trajectory-clustering anomaly detection integrated into the PROTECTOR video-analysis platform. 621 lines across seven commits, merged by the maintainer in January 2023. My MSc thesis work, landed in someone else's codebase.

  • PyTorch
  • Anomaly detection
  • Upstream contribution

Products

Things I've built

Focus4Life app icon

Focus4Life

Focus, backed by science.

A Pomodoro timer and task planner that helps you focus without guilt. Grow a zen garden as you work, see where your time really goes — and keep every byte of your data on your own device.

Body.Scratch app icon

Body.Scratch

Learn programming by dancing.

An AI-powered immersive game for 8-16 youth to learn programming by dancing. Helping educators engage their learners playfully, healthfully and collaboratively.

bodyscratch.academy ↗

Skills

Tech stack

Languages

  • Python
  • Java
  • TypeScript
  • JavaScript
  • Dart
  • C/C++
  • SQL
  • R
  • Bash
  • Scala

Machine learning

  • PyTorch
  • TensorFlow
  • Keras
  • scikit-learn
  • XGBoost
  • Transformers
  • MediaPipe
  • ONNX
  • TensorFlow Serving

Cloud and infrastructure

  • GCP
  • GKE
  • Cloud Run
  • Cloud SQL
  • Cloud Build
  • Kubernetes
  • Terraform
  • Helm
  • Docker
  • AWS Lambda
  • Linux

Backend and interfaces

  • Quarkus
  • FastAPI
  • REST
  • gRPC/protobuf
  • WebSockets
  • RabbitMQ
  • PostgreSQL
  • Redis
  • Elasticsearch

Front-end and mobile

  • React
  • TypeScript
  • Flutter
  • Astro
  • D3.js

Data and compute

  • Spark
  • Kafka
  • FAISS
  • Slurm/PBS
  • MPI/OpenMP
  • Prometheus
  • Grafana

Education

Academic background

MSc, Computer Science University of Trento, Italy · 2020 – 2023
Exchange, Computational Linguistics Heidelberg University, Germany · 2021 – 2022
Engineer's degree, Computer Science Hanoi University of Science and Technology · 2013 – 2018

Contact

Get in touch

I am open to part-time engineering roles in the Netherlands — machine learning, software, or platform and DevOps. The fastest way to reach me is email.

phan.business.nl@gmail.com
Amsterdam, Netherlands · Dutch residence permit with free access to the labour market, no sponsorship required.
English (working language) · Vietnamese (native) · Dutch (beginner).