Fullstack & AI Agent Engineer
I build production systems end to end — API, web, data pipelines, infrastructure —
and the agent tooling that operates them.
Fullstack engineer since 2015, working mostly on B2B platforms in Vietnam and Laos: CRM, logistics, fintech, real estate and e-commerce. Recent work centres on multi-channel communication platforms, distributed crawling, and self-hosted geospatial services — plus the AI agent tooling that keeps a codebase of that size navigable.
Most of my day-to-day work lives in private organisation repositories, so this profile shows what I build rather than a contribution graph.
- 🔭 Currently — an omnichannel CRM / telesales platform (NestJS + React monorepo, ~19k symbols)
- 🧰 Comfortable across — TypeScript, Go, C#/.NET, Python, and the infrastructure underneath
- 🤖 Interested in — agent-assisted engineering: code-intelligence MCP servers, RAG, workflow automation
- 📫 Reach me — datnt37@gmail.com
🇻🇳 Tiếng Việt
Kỹ sư fullstack từ 2015, chủ yếu làm nền tảng B2B tại Việt Nam và Lào: CRM, logistics, fintech, bất động sản và thương mại điện tử. Giai đoạn gần đây tập trung vào nền tảng giao tiếp đa kênh, hệ thống thu thập dữ liệu phân tán, dịch vụ bản đồ self-hosted — cùng bộ công cụ AI agent giúp điều hướng codebase quy mô lớn.
Phần lớn công việc nằm trong repository của tổ chức ở chế độ riêng tư, nên trang này mô tả những gì tôi xây dựng thay vì biểu đồ đóng góp.
- 🔭 Hiện tại — nền tảng CRM / telesales đa kênh (monorepo NestJS + React, ~19k symbol)
- 🧰 Thành thạo — TypeScript, Go, C#/.NET, Python và hạ tầng bên dưới
- 🤖 Quan tâm — kỹ thuật phần mềm có agent hỗ trợ: MCP code-intelligence, RAG, tự động hoá quy trình
- 📫 Liên hệ — datnt37@gmail.com
Descriptions below are anonymised — the code lives in private organisation repositories.
NestJS React TanStack Router Prisma PostgreSQL Redis BullMQ
A monorepo CRM for a logistics business: lead capture, telesales cockpit, customer 360, quotation and order push to a partner API.
- Lead distribution engine — shift-aware round-robin with WIP limits, campaign and source-based routing, and an event-driven hot lane for time-critical leads
- Position-based RBAC with row-level security — ownership scoping enforced at the query layer, not the controller
- Domain event bus — emit-after-commit listeners driving realtime, audit log and queued heavy writes; realtime events carry snapshots so clients patch cache instead of refetching
- Channel integrations — Facebook Graph, Zalo OA and Zalo Personal, plus Stringee PCC voice with CDR reconciliation
Go Python PostgreSQL Redis S3
Collects and normalises social posts into structured leads and supplier profiles.
- Content-hash deduplication and idempotent upserts across out-of-order batches
- Public ingest API returning
202with per-item retry, isolated queue lanes so a 68k-job backlog cannot starve interactive traffic - Media mirroring to object storage with public-prefix delivery
Go Valhalla PostgreSQL/PostGIS
Vietnamese geocoding and truck routing without a third-party quota.
- Dual-period administrative units — the legacy three-tier map and the current two-tier one in a single tree, matched by code
- Address search tolerant of Vietnamese diacritics and abbreviations
- Distance matrix feeding freight pricing for ~16.8k administrative units
TypeScript Node.js zca-js Redis
Holds live personal-messaging sessions and serves several products from one process.
- Sessions keyed by
(tenant, channel), each consumer scoped to its own API key - QR login, contact resolution with a rate-limited phone→uid cache, attachment upload, stickers and reactions
- Webhook relay with IP allow-listing at the edge
Go TypeScript Vue Python
Wallet and merchant backends, CMS, and document OCR for a Lao market payment product.
C# .NET Hangfire SQL Server Redis
Long-running platform work: SSO/auth service, webhook hook-process relay, ZNS notification service, error tracking, background job orchestration and reporting.
- Code-intelligence MCP — graph-indexed codebase (symbols, relationships, execution flows) used for impact analysis before edits and change detection before commits
- Operational agent skills — packaged runbooks that let an agent drive Portainer, Jenkins, Rancher and production databases safely, with read-only defaults
- Workflow automation — self-hosted n8n with a custom branching canvas and node registry
- Vietnamese speech-to-text — PhoWhisper served behind an internal API
- RAG & chat agents — retrieval pipelines and agent management for customer-facing bots
| Project | What it is |
|---|---|
| DiaGioiHanhChinhVN ⭐38 | Vietnamese administrative-division dataset (province / district / ward), the version most Vietnamese apps end up needing |
| lumina-admin | React + TypeScript + Tailwind + shadcn/ui admin template — ~31 screens, EN/VI i18n, mock service layer, bundled design-system skill |
| 9Router | Connects AI coding tools to 40+ providers and 100+ models through one endpoint |
| Block-YT | Lightweight YouTube distraction blocker |
Languages
Backend
Frontend
Data & infrastructure
- Prove the cause before changing behaviour. A fix that is not aimed at a measured root cause is a guess with a commit hash.
- Push invariants down. Permission scoping belongs in the query layer, pricing rules in one module, not spread across controllers.
- Tests are debt, not assets. Write them where failure costs money, data or privacy — then keep the suite fast enough that people actually run it.
- Keep files readable by whoever reads next, human or agent. Split by concern, not by line count.





