Loading portfolio...
Nguyen Duong Hong Giang
Agentic workWork CV
Scroll to explore
Selected agentic and AI work

Systems I designed and built

Agentic engineering first, then production AI products: the problem each one solves, how code keeps agents and models under control, and how it is measured.

Self-builtAgentic engineering, 2026

Multi-agent coding pipeline over the Agent Client Protocol

Coding agents from different vendors work one task plan together, while code, not an LLM, decides what runs next and what each agent may touch.

  • A code orchestrator owns the flow: it is the ACP client, opens one session per role and drives agents from different vendors; every reply is a JSON block validated against a schema before the next step.
  • Cross-vendor roles: Opus plans a task DAG (or asks the user), DeepSeek plans and implements, Opus reviews, Sonnet rewrites failing plans and checks the work, Opus reviews the integration branch; independent tasks run in parallel waves.
  • Decision gates in code: every agent permission request goes through a policy function; readers get read-only tools in their worktree, writers can edit only inside it, only the implementer gets a shell and it runs in a sandbox; acceptance commands are run by the orchestrator, never by Claude agents. A blocked run waits for a human unblock with a note.
  • Audit trail and cost: run state, plans and an append-only event log make every decision replayable; numbered decision records; token usage per model and session.
fault-injection runskill-and-resume end to endtoken usage per model and session

TypeScript, ACP (JSON-RPC over stdio), Claude Code (Opus, Sonnet), DeepSeek Harness, zod, macOS sandbox, Vitest

Agent toolingAgentic engineering, 2026

AI-PM: project management with an MCP server for agents

Agents take tickets and move them through review, but a human still decides what counts as done.

  • 40+ MCP tools (create, claim, request review, approve, request changes, report blocker, daily report) so agents take tickets and move them through review.
  • Agent writes run under an autonomy level: in approval mode they become proposals that wait for a human, completion requires review, and self-approval is blocked on the server.
  • Rules first, LLM on misses for intent routing, measured on a 300-message eval over 27 routes; test coverage on tools and approval rules, run in CI.
40+ MCP tools92.3% with rules, zero cost97.3% at about $0.11 per 1,000 messages

TypeScript, Fastify, Prisma, PostgreSQL (pgvector), Redis, MCP SDK, React, Vitest, GitHub Actions

How the agent pipeline fits together

Scroll sideways to see the whole diagram

Multi-agent coding pipeline over the Agent Client Protocol A code orchestrator acts as the ACP client and opens one session per role. Opus plans a task DAG, DeepSeek implements in parallel waves, Opus reviews, Sonnet checks the work and rewrites failing plans, and Opus reviews the integration branch. Every agent request passes decision gates in code: schema checks, a permission policy, scoped tools, a sandboxed shell with acceptance commands run by the orchestrator, and a human unblock. Run state, an append-only event log, numbered decision records and token usage per model and session form the audit trail. INPUTTask requestfrom the user ACP CLIENTCode orchestratorone session per role PLANTask DAGOpus plans or asks the user PARALLEL WAVESImplementDeepSeek plans, implements ReviewOpus reviews the work Check and rewriteSonnet checks the work,rewrites failing plans Integration reviewOpus, integration branch DECISION GATES IN CODE Schema checkevery reply is a JSONblock, validated Permission policyeach agent request goesthrough a function Scoped toolsreaders: read-onlywriters: own worktree Sandboxed shellimplementer only;acceptance by orchestrator Human unblocka blocked run waitsfor a note from a human AUDIT TRAIL AND COST Run state and planskill-and-resume tested Append-only event logevery decision replayable Decision recordsnumbered Token usageper model and per session

Pick a flow to highlight it. The orchestrator is plain code: agents propose, code validates, gates and logs every step.

Self-builtAgentic engineering, 2026

AI-first delivery harness for agent teams

Day-to-day engineering delegated to agents, with model cost and output quality held by code.

  • 20 role-scoped agents (explorer, researcher, code worker, planner, verifier), each pinned to a model and a minimal tool set.
  • A cost-aware model router written as a Python hook tiers each delegated task and routes it to Haiku, Sonnet or Opus with a logged decision.
  • Five deterministic gates, mostly Python scripts, that fail the run: output contracts, pre-publish sensitive-data scan, headless browser check, schema validation, release check.
  • Permission and stop events reach me in chat and replies route back to the session; one policy source synced to three agent harnesses with a drift check.
20 role-scoped agents5 deterministic gates1 policy source, 3 harnesses

Python (hooks, gates, routers), Claude Code, subagents, MCP

GTV platformGTV (Viec3Mien), 04/2026 to present

Ontology-based knowledge platform

The processes and know-how of a blue-collar recruitment group lived only in dozens of operational chat groups and scattered files.

  • A live listener captures the groups; an intake pipeline parses Office, PDF and scanned documents, redacts credentials, deduplicates by content hash and classifies with a confidence threshold that routes unsure items to human review.
  • Designed the domain ontology in LinkML (24 classes: factories, roles, processes, decisions, meetings, documents) and generated OWL, SHACL shapes and a JSON-LD context from one schema.
  • Code decides what enters the graph, not the LLM: agents propose facts as JSON-LD; a SHACL ingest gate rejects unknown classes, undeclared properties, missing provenance and duplicates; a SPARQL guard lets agents run only bounded read queries; ambiguous identities go to a warning queue instead of being guessed.
24 LinkML classeslegacy log replayed, zero violations

Python, LinkML, OWL, SHACL, SPARQL, JSON-LD, Oxigraph, OCR, Telegram and Zalo intake

In productionGTV (Viec3Mien), 04/2026 to present

Agent-delivered production systems

Production systems built ticket by ticket by coding agents, with budgets, evals and test selection enforced in code.

  • Video production studio (Python, FastAPI): idea to finished 9:16 video through a multi-step graph with human approval gates; a per-flow budget engine reserves cost before each paid model call and settles on the real cost; Pydantic-validated structured outputs with bounded repair; an editor agent with a single read tool returns JSON that code applies.
  • Domain-clustered testing for agent delivery: the suite is split into domain clusters mapped to source paths, with a self-test that fails on orphan or duplicate test files. An agent ships after lint, typecheck and its own TDD tests, then only the clusters its diff touches run, under memory and time limits with a JSON report per run: full test coverage on every change without paying for the full suite on every ticket.
  • Intake bot with an eval gate: a chat bot turns team requests into tickets, gated by a golden-set eval that rejected two candidate models.
  • Read-only MCP data agents: warehouse agents reach Postgres only via a read-only MCP server with personal data masked; a telemetry contract ships LLM cost per call.
per-flow budget engine2 candidate models rejected by evalLLM cost per call

Python, FastAPI, Pydantic, PostgreSQL, SQLite, MCP, OpenRouter, Claude, Node.js, React, Remotion, Playwright

On-premisePTHub (VAI-M), 2025 to 2026

On-premise meeting AI for the State Audit Office of Vietnam

Audit meetings turned into speaker-attributed transcripts and the official conclusion notice, fully on-premise.

  • Event-driven Python services: FastAPI API and GPU inference workers linked by Redis Streams and work queues, with autoscaling workers.
  • LLM chosen by benchmarking 5 models x 9 prompts.
  • Deterministic correction of names, titles, state bodies and legal references; the LLM only drafts into a fixed template with no inferred facts; political-risk flagging with evidence review.
5 models x 9 prompts benchmarkedfully on-premise

PyTorch, Whisper, PhoWhisper, pyannote, Qwen 2.5 72B, vLLM, Ollama, FastAPI, Redis Streams, GPU servers

PTHub product02/2026 to 04/2026

E-Office AI Assistant

Staff requests in an e-office system, routed to the right specialised agent.

  • Built on Agno AgentOS: a coordinator routes staff requests to 11 specialised agents, including text-to-SQL and department-scoped hybrid RAG with RBAC.
  • Layered guardrails, SSO and OpenTelemetry tracing. Led the team.
11 specialised agents

Agno AgentOS, FastAPI, PostgreSQL + pgvector, Redis, Claude, Gemini, OpenTelemetry, Grafana, Kubernetes

PTHubLead AI Engineer (Co-founder, CTO), 11/2024 to 04/2026

PTHub's Core AI platform

The shared platform behind PTHub's products, in a company that grew from zero to 40 people in 17 months.

  • Owned architecture, hiring and delivery of the Core AI platform and its products, and drove AI adoption across delivery teams.
  • RAG evaluation design for a bank (DeepEval, RAGAS).
vaim.pthub.vn
Earlier AI work

RAG, SQL agent, voice and vision

Earlier production LLM, speech and vision systems.

  • LangGraph RAG with a golden-set eval.
  • Scoped SQL agent with a deny-by-default query guard.
  • On-premise voice agent and production computer vision (YOLOv8).
hit@5 1.00MRR 0.98
Toolkit

What I work with

Agentic and SDLC

  • Agent Client Protocol
  • MCP servers and tools
  • Claude Code and subagents
  • LangGraph, LangChain
  • Agno
  • Multi-agent orchestration
  • Policy and approval gates
  • Sandboxed tool use
  • Structured outputs with repair
  • Ticket-driven agent delivery
  • Domain-clustered test selection

Evals, safety, cost

  • Golden-set evals
  • Go/no-go thresholds
  • DeepEval, RAGAS
  • Model benchmarking
  • Guardrails (PII, SQL injection)
  • Cost-aware routing
  • Per-flow budgets
  • LLM cost telemetry

Knowledge and retrieval

  • LinkML, OWL, SHACL
  • SPARQL, JSON-LD
  • Hybrid RAG, reranking
  • Graph-RAG
  • pgvector, FAISS
  • vLLM, Ollama, liteLLM
  • Claude, GPT, Gemini
  • Qwen, DeepSeek

Engineering

  • Python: FastAPI, asyncio, Pydantic
  • Background workers, pytest
  • TypeScript: Fastify, React
  • .NET
  • Event-driven: Redis Streams, queues
  • PostgreSQL
  • Docker, Kubernetes
  • GitHub Actions, GitLab CI
  • OpenTelemetry

ML, speech and vision

  • PyTorch
  • ASR: Whisper, PhoWhisper
  • Diarization: pyannote
  • TTS
  • YOLOv8
  • OCR

Leadership

  • Hands-on technical leadership
  • Teams of 15 to 40
  • Architecture ownership
  • Hiring and delivery
  • Cross-team AI adoption
  • Remote with EU and KR teams
  • Fluent English
  • Banking and microfinance
Connect

CV, contact and companies

12+
years in engineering
40
people in 17 months at the AI company I co-founded
20
role-scoped agents in my delivery harness
40+
MCP tools for agents in AI-PM
97.3%
intent routing at about $0.11 per 1,000 messages
200 TPS
interbank transfer system