I build AI products that ship — voice bots and agentic systems in production.
Tâm — Product Builder @ BIVA, based in Hanoi, Vietnam. Voice bots that handle real customer calls for Vietnamese transport companies, and agentic booking systems that process transactions end to end. I care less about which model is underneath than about whether the product works for the person on the other end of the call.
I started in competitive programming — ACM/ICPC at PTIT — and moved into agentic application development. Along the way, evaluation became the interesting part: structured audit frameworks that lint, simulate, refine and capture lessons, and prompts treated as product surfaces that are versioned, tested and observable.
A bot that resolves 80% of calls beats a clever architecture that resolves 60%. The tech choice comes after the problem is clear.
Iteration driven by real call transcripts, and metrics that are observable in those transcripts rather than in a dashboard nobody opens.
Lint, simulate, refine, capture lessons. Prompts are product surfaces: versioned, tested, observable — not strings someone edited in a hurry.
Start from the user problem, not the tech: a bot that resolves 80% of calls beats a clever architecture that resolves 60%. Ship, measure, iterate — transcript-observable metrics over dashboards nobody reads. And translate in both directions: unit economics with stakeholders, token economics with engineers.
This site is the other half of the work. TypeScript and React 19 on TanStack Start, bundled by Vite and prerendered to Cloudflare Pages. Hono on Cloudflare Workers with D1 for the dynamic endpoints. Rust compiled to WebAssembly for the data-crunching bits. Turborepo, pnpm, Biome and Vitest hold it together.
What I've shipped
Voice AI in production, an agentic booking product, and the evaluation practice that keeps both honest.
Voice AI in production
intercity bus operatorsDesigned and deployed callbots for Vietnamese transport companies — booking, routing, and Vietnamese-language customer service. I owned the full loop: conversation design, prompt architecture, evaluation frameworks, and iteration from real call transcripts.
BIVA
voice-based bookingA voice booking product with a verify-gated completion architecture: fail-closed admission control, so the bot never confirms what it cannot guarantee. Transactions are processed end to end.
Evaluation as a product discipline
lint → simulate → refineStructured audit frameworks that lint, simulate, refine, and capture lessons. Prompts are treated as product surfaces: versioned, tested, and observable — so a regression is something you can see, not something a customer reports.
This monorepo
4 apps · 9 cratesThe site you are reading: three prerendered TanStack Start apps on Cloudflare Pages, one Hono API Worker on D1, eight shared packages, and nine Rust crates compiled to WebAssembly.
Where the time went
Posts and Telecommunications Institute of Technology (PTIT)
Information Technology · 2021 — 2025
Workspace composition
share of 21 membersHow this monorepo splits between deployable apps, shared TypeScript packages, and Rust crates.
Deploy targets
share of 4 surfacesEverything ships to Cloudflare: three prerendered Pages projects and one Worker for the dynamic endpoints.