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
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