Skip to content

I build web systems, automations and AI agents to order.

Tell me the job and I pick the tools for it. Every project here has a record, and every number in a record has its source.

Scheduled run

every 14 days

Demo data · fictional companies

Flash Report

What changed, and where to act

Events
31+5
Accounts
20
Act now
11+6
The Flash Report from the account intelligence build, as its public demo shows it: a scheduled run rebuilds 20 briefs and compares them with the last report.

Worked with these teams and 9 private clients

  • Pratek
  • Uniben Foods
  • Vietcos
  • eVS
  • Van Data Team
  • Ontevo
  • Repurgo

Web systems

TypeScript | React | .NET | PostgreSQL | Power BI Embedded

Order, invoice, HR and internal tools, the dashboards a team opens every morning, or features in a product you already run. Anything that should get faster is measured before and after.

Systems and products

HR system

Rebuilt for this page · names hidden
An HR system for a furniture factory, rebuilt for this page with names hidden. Its counts come from the record: 254 employee records, 79,262 punches turned into 6,354 workdays, 112 permissions across 6 roles. Read the record →

Automations

n8n | Python | Google Apps Script | CRM APIs

Leads, replies and reports moving between your tools without sending twice or losing one. Rules decide first; a model is asked only when the rules are unsure.

Automations
Two real workflows with client names removed: replies written to the CRM exactly once (20 copies of one event, 1 row), and outreach drafts a person approves before Gmail sends each one once. Read the CRM record →

AI agents

Python | LLM APIs | Playwright | GitHub Actions

Agents that research, draft, check and act inside your tools, and answer questions from your own records with the records they used. Each one has a narrow role, a check it must pass, and a person approving whatever leaves the building.

Agent pipeline record

Producer agent

8 role agents · 302 test cases

Content hidden: client's private repository
One run of the news-video pipeline: research builds a claim registry, a person approves the hook, script, scenes and final cut, and the word-timing gate fails closed once before it passes. Read the record →

Explainer video

Remotion | FFmpeg | Speech recognition

Explainers and short videos with scenes written in code, captions timed to each word, and checks on every render. Vietnamese or English.

Studio

Video production run

Pin Yếu · my own pitch for a horror channel

AI steps marked
The run behind Pin Yếu, my own teaser: I write the brief and the script, a synthetic voice reads it, two speech-recognition models check every take, the scenes, rig and sound are code, and each render is checked before the final cut. Open the Studio →

Software built to your brief, on the tools the job needs, with a record behind every number.

I pick the stack once I know the job. Each of my 26 projects lists its tools in its record; here are three real briefs and the tools that answered them.

  • Working software with tests
  • Before-and-after numbers for speed work
  • Notes and files your team can keep
Send a brief

From a brief to a stack

Three briefs from real records, and the tools each one used

Brief

Stack

  • n8n
  • Node.js
  • Python
  • CRM API
  • Slack
NLV-26-CRMTwenty requests, one row. Replies and bookings into a CRM exactly once.

Brief

Stack

  • .NET
  • React
  • TypeScript
  • Ant Design
  • PostgreSQL
  • xUnit
  • Docker
  • Python
NLV-26-HRMAn HR system for a furniture factory, from time clock to timesheet

Brief

Stack

  • Next.js
  • Playwright
  • Lighthouse
  • WebGL
  • CSS
NLV-26-PRFTwo slow intros removed, and the bugs they hid fixed

Every number has a source

Each figure on this site opens its record, and each record names the evidence behind it: a log, a test run, a report. Some evidence is public; the rest is sent on request.

Read a record

Where a figure comes from

  1. Figure4,493 → 526 msTop of the page visible on desktop
  2. ClaimThe top of the page became visible on desktop in 526 ms instead of 4,493 ms.
  3. Evidencevandatateam.com runtime performance passPerformance reportOn request21 Oct 2026
  4. RecordNLV-26-PRF Two slow intros removed, and the bugs they hid fixed →
  1. Figure20 → 1Concurrent requests to rows written
  2. Claim20 concurrent requests for the same event write exactly 1 row.
  3. EvidenceCRM cutover log and evidence folderDocumentOn request21 Oct 2026
  4. RecordNLV-26-CRM Twenty requests, one row. Replies and bookings into a CRM exactly once. →
  1. Figure79,262 → 6,354Time-clock punches turned into workdays
  2. ClaimIn production it has turned 79,262 time-clock punches into 6,354 workdays.
  3. EvidenceAcceptance report, 50 screensDocumentOn request23 Sept 2026
  4. RecordNLV-26-HRM An HR system for a furniture factory, from time clock to timesheet →

How work starts

A short call, the scope on one page, then work in small slices you can review, each with its tests or before-and-after numbers.

Book a 20-minute call

All the work, with its status

26 projects since 02/2025, 10 of them live. Open a row for the short version, or the record for the whole story.

All work

Projects

What the work changed, by the numbers.

Have a system to build or fix? We can look at it in 20 minutes.

  • We go through what runs today and what should change
  • The scope in writing: what changes, what stays, how we know it is done
  • Work lands in small slices you can review
  • Each slice comes with its tests or before-and-after numbers
  • Handover: code, tests, a runbook and the editable files
Long Vu in a white shirt with his arms crossed.
Mon to Fri, 14:00 to 17:00 and 20:00 to 22:00 GMT+7