LONG.VUlà demo template Webchốt — buyer thay nội dung khi deployQuay lại Webchốt Templates

STACK MATCHER · 8 CASE STUDIES

> grep --problem ./portfolio/*

Recruiter hoặc CTO đang scout engineer cho vấn đề cụ thể? Chọn vài filter dưới đây — tôi sẽ surface những dự án đã ship giải quyết đúng dạng problem đó. Honest metrics, lessons learned ngắn gọn.

Showing 8 / 8 projects·0 filters active
filters·0 active

01 · DOMAIN

02 · SCALE

03 · LANGUAGE

04 · LATENCY

~/portfolio/orbit-tracker.md

· Senior Engineer (team 4) // 14 tháng · 2022–2023

OrbitLogi — Real-time Shipment Tracker

GoKafkaPostgres CDCRedis StreamsWebSocketK8sTerraform

# problem

Logistic platform Đông Nam Á cần dashboard theo dõi 4 triệu shipment/tháng — driver gửi GPS ping mỗi 15 giây, dispatcher xem live map. Hệ thống cũ dùng polling REST mỗi 30s, dữ liệu trễ và RDS quá tải.

# constraint

Phải giữ p95 dưới 200ms từ ping → dashboard render, KHÔNG được tăng cost AWS thêm $20K/tháng. Mỗi driver mobile dùng data 3G nên payload < 800 bytes/message.

# solution

Ship pipeline event-driven Go — Kafka ingest GPS topic, Postgres CDC bằng Debezium fan-out qua Redis Streams, WebSocket SFU push delta-encoded payload. Handled constraint cost bằng cách bỏ RDS read-replica và serve hot path từ Redis.

p95 latency

120ms

từ 850ms ban đầu

Ingest rate

4M events/ngày

peak 280 RPS

Infra saving

$48K/tháng

sau 3 tháng

Uptime 12 tháng

99.94%

2 incident < 8min

# lessons --learned

  • 01CDC Debezium cần snapshot strategy rõ ràng — initial snapshot từng làm down 22 phút.
  • 02Delta encoding tiết kiệm 60% bandwidth nhưng phải document protocol cho mobile team.
  • 03WebSocket connection limit per ALB là 100K — phải shard sớm, không đợi production.
~/portfolio/finhub-fintech.md

· Solo Founding Engineer // 11 tháng · 2024–2025

FinHub — Personal Finance App

Next.js 15tRPCPostgresRedisAnthropic APIAWS ECSpgvector

# problem

B2C fintech VN cần phân loại 5K giao dịch/ngày — đồng bộ 14 ngân hàng qua Open Banking API, gắn category chuẩn VAS, xuất báo cáo tháng. User mong đợi categorisation accuracy > 92% và xem được trong 2 giây.

# constraint

Anthropic API rate limit 50 RPM tier 1, mỗi call ~$0.003. Budget LLM tối đa $2K/tháng cho 50K MAU. Không thể call LLM mỗi giao dịch — phải cache thông minh.

# solution

Ship hybrid: rule-based classifier (regex + merchant taxonomy 800 entry) chạy trước, fallback LLM Claude Haiku cho 8% giao dịch ambiguous, store embedding pgvector để học từ user correction. Handled constraint rate-limit bằng batch queue 50 transactions/request.

Accuracy

94.2%

measured trên 12K sample

LLM cost

$1.4K/tháng

p50 latency 380ms

MAU

52K

sau 8 tháng launch

Cache hit

91%

sau 30 ngày user

# lessons --learned

  • 01Rule-based đi trước LLM tiết kiệm 90% cost — luôn build classical fallback.
  • 02pgvector trên Postgres 16 đủ tốt cho < 1M embedding, không cần Pinecone.
  • 03User correction loop quan trọng hơn model accuracy ban đầu — phải design UX cho feedback.
~/portfolio/lumio-edtech.md

· Tech Lead (4 engineers) // 13 tháng · 2023–2024

Lumio — Live Classroom Platform

GoWebRTC SFUReact NativePostgresS3CloudFrontAnthropic API

# problem

EdTech series A cần live classroom 2K học sinh đồng thời với recording + AI tóm tắt bài học. Vendor SaaS (Agora/100ms) báo giá $42K/tháng — quá đắt cho margin K-12 VN. Phải self-host SFU.

# constraint

Mobile-first — 70% học sinh dùng Android giá rẻ 3G. Audio packet loss tolerance > 8% bình thường. Recording phải tóm tắt được trong < 5 phút sau buổi học.

# solution

Ship SFU Go tự host trên Hetzner bare-metal (3 region), forward error correction cho audio, recording chunked upload S3 + Anthropic Claude tóm tắt async qua SQS queue. Handled constraint Android low-end bằng simulcast 3 layer + adaptive bitrate aggressive.

Concurrent users

2,180 peak

6 lớp 360 student

Audio MOS

3.8/5

tested 4G + 3G

Infra cost

$6.2K/tháng

vs $42K vendor

Summary latency

4.1 phút p95

sau buổi học

# lessons --learned

  • 01Self-host SFU rẻ hơn 6x nhưng on-call burden tăng — phải có runbook trước launch.
  • 02WebRTC simulcast cần test trên thiết bị Android < $200, không emulator.
  • 03AI summary phải có "retry with longer context" — Haiku đôi khi cắt giữa câu.
~/portfolio/nestmart-saas.md

· Solo Engineer // 6 tháng · 2024

NestMart — F&B Inventory SaaS

Next.jstRPCPostgres + PrismaRedisVercelBullMQ

# problem

B2B SaaS multi-tenant quản lý kho cho 320 cửa hàng F&B VN — POS sync mỗi 5 phút, dự báo nhu cầu time-series, UI tiếng Việt 100%. Mỗi tenant 200-2K SKU, dữ liệu phân tán theo timezone HCM.

# constraint

Vercel Hobby budget tối đa $200/tháng. Tenant lớn nhất gửi 18K POS sync transaction/ngày — không được block UI khi đồng bộ. Phải support offline-first cho mobile cashier (PWA).

# solution

Ship multi-tenant trên Postgres schema-per-tenant + Prisma generated client per schema. POS sync chạy trên BullMQ + Redis, UI optimistic update qua tRPC subscription. Handled constraint Vercel budget bằng cách offload batch job qua Railway worker $20/tháng.

Active tenants

320

avg 480 SKU/tenant

POS sync

1.2M trans/ngày

p95 8 phút end-to-end

Vercel cost

$180/tháng

within budget

PWA offline

92% session

có recover sync

# lessons --learned

  • 01Schema-per-tenant trade-off: dễ isolate nhưng migration cần custom tooling.
  • 02Prisma client size bùng nổ ở 50+ tenant — phải lazy generate hoặc chuyển single schema.
  • 03Offline-first PWA phải có conflict resolution UI rõ ràng, không silent merge.
~/portfolio/fraud-shield.md

· Senior Backend (team 3) // 9 tháng · 2023

FraudShield — Real-time Risk Engine

RustApache FlinkKafkaClickHousegRPCKubernetes

# problem

Ví điện tử VN cần fraud detection real-time trên 800K transaction/ngày — chặn giao dịch nghi vấn trong < 50ms từ lúc user bấm "Xác nhận". Hệ thống cũ Python + Redis check rule, p95 320ms — nhiều false negative.

# constraint

Latency budget cứng 50ms (bao gồm network round-trip ~12ms). Không được tăng tỷ lệ chặn false-positive quá 0.4% — mỗi false-positive là 1 ticket support tốn $3.

# solution

Ship engine Rust gRPC scoring inline, feature store ClickHouse cập nhật streaming qua Flink, model XGBoost ONNX inference local. Handled constraint latency bằng cách pre-compute aggregate features (last-24h-amount, merchant-velocity) trong Flink, score chỉ là vector mult.

p95 inference

38ms

budget 50ms

Throughput

11K TPS peak

Tết spike 2024

False positive

0.31%

down từ 1.2%

Fraud caught

+34%

YoY recovery $/tháng

# lessons --learned

  • 01Rust learning curve mất 6 tuần đầu — nhưng GC-free predictability đáng giá.
  • 02ONNX Runtime Rust binding ổn định hơn Python tflite cho production inline scoring.
  • 03Feature store là khó nhất, không phải model — invest tooling debug trước.
~/portfolio/civic-data.md

· Solo Data Engineer // 4 tháng · 2024

CivicData — Public Records ETL

PythonAirflowDuckDBPostgresS3 Parquetdbt

# problem

NGO Việt Nam scraping 18 cổng dữ liệu công khai (UBND, Bộ Tài Chính, Cục Thuế) — chuẩn hoá thành dataset Parquet hàng tuần cho nghiên cứu báo chí. Mỗi nguồn schema khác, encoding khác (Latin-1, Windows-1258, UTF-8).

# constraint

Budget $0 — chạy trên 1 VPS Hetzner $14/tháng. Phải handle PDF tiếng Việt OCR (15% nguồn là PDF scan). Pipeline phải re-runnable hoàn toàn — replay 6 tháng dữ liệu trong < 4 giờ.

# solution

Ship Airflow trên Docker compose VPS, scraper Python async chia theo source, DuckDB transform local + dbt model SQL, output Parquet partitioned theo tháng. Handled constraint OCR bằng Tesseract VN traineddata + heuristic post-processing.

Sources

18

14 HTML + 4 PDF

Rows/tuần

420K

avg ~60K/source

OCR accuracy

88%

VN diacritics

VPS cost

$14/tháng

4GB RAM đủ

# lessons --learned

  • 01DuckDB thay Spark cho dataset < 50GB — đỡ phức tạp 10 lần.
  • 02OCR tiếng Việt cần custom dictionary, không tin Tesseract default.
  • 03Re-runnable pipeline buộc phải idempotent từ ngày 1 — đừng để retrofit.
~/portfolio/pulse-mobile.md

· Lead Engineer (mobile + backend) // 8 tháng · 2024

PulseHR — Mobile Performance App

React NativeExpoSwift modulesNode.jsPostgresOneSignal

# problem

Internal HR tool cho công ty 200 nhân viên — onboarding tracker, OKR check-in hàng tuần, performance review 360. Phải có app iOS/Android (push notification + offline mode) và web dashboard cho HR lead.

# constraint

Team mobile chỉ 1 dev (tôi) — không expand sang 2 codebase native. iOS có yêu cầu Face ID + Apple Sign-in (compliance security). Push notification phải gửi local nếu offline > 24h.

# solution

Ship React Native + Expo (single codebase), viết 2 native module Swift cho Face ID + Keychain biometric, Android biometric qua Expo plugin sẵn. Push qua OneSignal + local scheduled notification fallback. Handled constraint solo bằng cách giới hạn surface area native.

Adoption

198/200

sau 3 tuần roll-out

Crash-free

99.7%

iOS + Android

Native modules

2

mỗi cái < 300 LOC

Bundle size

14.2 MB

iOS, OTA update

# lessons --learned

  • 01Expo + 2 native module rẻ hơn full native cho team < 3 mobile dev.
  • 02Face ID iOS có edge case khi user thay đổi face data — phải re-prompt graceful.
  • 03OTA update Expo cứu được 4 hotfix không cần re-submit App Store.
~/portfolio/infra-cost-bot.md

· Solo DevOps Engineer // 3 tháng · 2024

CostBot — DevOps Cost Optimiser

PythonTerraformAWS Cost Explorer APISlack APILambdaDynamoDB

# problem

Startup VN burn AWS $18K/tháng nhưng không ai trong team biết bottleneck ở đâu — Cost Explorer UI khó đọc, finance phụ thuộc CTO export CSV mỗi tháng. Cần daily Slack digest + alert anomaly.

# constraint

Không được động vào production infra — chỉ read-only IAM. Bot phải chạy với cost < $30/tháng (không phải case thuê tool $$$ như Vantage). Tag chuẩn 60% — phải handle untagged resource graceful.

# solution

Ship Lambda cron daily pull Cost Explorer API + Trusted Advisor, store DynamoDB time-series, Slack message phân nhóm theo service + tag, anomaly detection z-score > 2.5. Handled constraint untagged bằng cách map qua resource group + naming convention regex.

Cost saving

$4.2K/tháng

sau 2 tháng action

Bot cost

$11/tháng

Lambda + DDB

Anomaly caught

7/tháng avg

4 actionable

Slack engagement

12 thread/tháng

team thảo luận

# lessons --learned

  • 01Cost Explorer API trễ 24-48h — không dùng cho real-time alert, chỉ daily.
  • 02Anomaly detection đơn giản (z-score) đủ tốt, không cần ML model.
  • 03Tag enforcement quan trọng hơn tool — bot chỉ là người nhắc, không sửa được nguyên nhân.

NEXT STEP

Đã thấy dự án phù hợp?
Đặt buổi 30 phút tech chat — free, không pitch.

Tôi dành 30 phút discovery với mỗi project mới — không sale, không deck. Mình bàn về problem cụ thể của bạn, ràng buộc kỹ thuật, và xem stack tôi có fit không. Sau call sẽ gửi technical proposal nếu hai bên đồng ý đi tiếp.