Tai LamCloud & Backend Engineer
Cloud + AI ProductLive2026

LiveCap

A production-deployed Vietnamese-English meeting caption system with real-time audio streaming, bilingual transcription, transcript export, and cost-aware AWS infrastructure.

Problem

Bilingual conversations are difficult to follow when captions arrive late, lose speaker context, or require raw meeting audio to be retained. LiveCap needed to keep the interaction real-time while controlling privacy, reliability, and cloud cost.

Users

Vietnamese-English meeting participants who need a readable shared caption workspace in the browser.

My role

Product, architecture, frontend, backend, and AWS infrastructure

Product evidence

Screens captured from the deployed product and its verified architecture documentation.

LiveCap production landing page
Production landing page with the cold-start and privacy model made visible.
LiveCap bilingual caption workspace
Caption workspace before microphone capture begins.
LiveCap AWS target architecture
Verified AWS request path, private compute, AI services, and transcript storage.

System path

The system is described as a sequence of responsibilities, not a list of frameworks.

  1. 01

    Browser

    Microphone capture, caption workspace, HTTPS and WSS

  2. 02

    CloudFront

    Single public entrypoint, WAF, private frontend delivery

  3. 03

    ALB + Fargate

    FastAPI, WebSocket sessions, wake and idle scaling

  4. 04

    AWS AI

    Parallel Transcribe streams and finalized-text translation

  5. 05

    Private storage

    Expiring transcript downloads and CloudWatch operations

Outcomes

  • Streams 16 kHz PCM from the browser over secure WebSocket connections and renders finalized bilingual caption rows.
  • Runs behind CloudFront, ALB, WAF, and private ECS Fargate networking with wake-on-demand and scale-to-zero behavior.
  • Passes 208 backend tests, 14 frontend tests, production builds, Terraform validation, CI, and secret scanning.
  • Exports finalized text to private S3 through time-limited links without storing raw audio.

Technology

FastAPIReactTypeScriptAmazon ECSTranscribeTranslateTerraform

Decisions and trade-offs

Keep audio ephemeral

Microphone audio is streamed for processing but never stored. Only finalized transcript text can be exported.

Use a single browser-facing origin

CloudFront serves the frontend and routes API, WebSocket, and wake traffic so the application has one secure public entrypoint.

Trade instant startup for lower idle cost

The backend scales from zero to one task. The UI explains the cold start and polls health instead of hiding the operational trade-off.

Current boundaries

  • The first session after an idle period can take 30-60 seconds while Fargate becomes healthy.
  • The service intentionally runs at a maximum of one task because active session state remains process-local.
  • A live WebSocket session is interrupted if the task is replaced; ECS restores service but not in-flight state.

What I learned

Production readiness is not a single deployment step. It is the alignment of UX, network boundaries, privacy choices, tests, observability, cost controls, and honest documentation of what the system still cannot guarantee.