Skip to main content

Software Engineer · AI · Infra

JJ Teoh

Mechatronics engineer turned software developer. I build reliable AI systems, SDKs, and self-hosted infrastructure.

fig.01 — flow field

About

I came to software from mechatronics. Control systems, embedded hardware, things that fail in the field. So I build software the way I'd build a machine: for failure modes and data flow, not just the happy path.

Distributed systems
Offline-first sync, edge computing, and data that survives bad networks.
Full-stack product
End to end. Schema and API design through to a polished, shipped interface.
Infrastructure
Containers, pipelines, and the operational glue that keeps things alive in prod.
fig.02 — instrument · drag to rotate

Selected work

A few systems I've built end to end. Self-hosted, strongly typed, and full of the edge cases that show how I think.

AI Trading Copilot research intelligence dashboard with per-symbol theses and ticker signals.

AI / Fintech Systems

AI Trading Copilot

Self-hosted market research and trading workstation with broker tools, multi-agent analysis, and gated execution paths.

apps
Nuxt + FastAPI
agent roles
10-role pipeline
broker surface
market + account tools
runtime
Dockerized stack
Nuxt FastAPI LangGraph PostgreSQL
Source
Repro landing page highlighting feedback reports with annotated screenshots and session replay.

SDK / Full-Stack

Repro Feedback SDK & Dashboard

Framework-agnostic feedback widget with annotated screenshots, session replay, diagnostics, and a self-hostable Nuxt dashboard.

deliverables
SDK + dashboard
capture window
30s replay
embed modes
script + ESM
hosting
self-hostable
Nuxt Preact TypeScript PostgreSQL
Source Docs

More work

Experience

Production work across backend systems, internal tools, platform integrations, and field-ready software.

Jul 2025 – Present

Studio20 logo

Backend Team Lead

Studio20 · Full-time

Kuala Lumpur · Hybrid

  • Lead engineer for the Singapore Business Federation's Future Readiness Index - a portal where Singapore companies assess their business readiness; built with Next.js, ElysiaJS and PostgreSQL on AWS.
  • Load-tested the portal with k6 before launch, fixed eight bottlenecks, and presented the results to the client; took it through a third-party pentest and closed every finding before launch.
  • Designed and built a white-label AI knowledge assistant - a RAG product over a client's own documents, mixing vector and keyword search so answers cite the right source; runs on OpenAI, Anthropic, Gemini or DeepSeek.
  • Act as technical point of contact for clients - scope requirements, write proposals, and walk business stakeholders through trade-offs.
  • Mentor backend engineers and run interviews; set up the project template and CI/CD pipeline used across client projects, with checks that block unsafe database migrations.

Mar 2024 – Jul 2025

Studio20 logo

Backend Developer

Studio20 · Full-time

Kuala Lumpur · Hybrid

  • Built Malaysia's LHDN e-invoicing into a hotel group's booking and point-of-sale systems; traced recurring production freezes to an exhausted database connection pool and fixed them.
  • Published an open-source TypeScript client for the LHDN e-invoicing API, with per-endpoint rate limiting; in production on client projects.

Jan 2024 – Present

ViTrox Agritech Sdn. Bhd. logo

Software Developer

ViTrox Agritech Sdn. Bhd. · Part-time

Remote

  • Built a desktop app that works offline at 3+ customer sites and syncs with the cloud web app when the connection returns, without overwriting edits made online in the meantime; built with Tauri and SQLite.
  • Set up release channels so each customer site only gets updates after they are approved.

Oct 2023 – Jan 2024

ViTrox Corporation Berhad logo

Industrial Trainee

ViTrox Corporation Berhad · Internship

Penang · On-site

  • Built an IoT dashboard in Nuxt 3 for live sensor data and device control.

Feb 2022 – Jul 2024

i-SURVY SDN BHD logo

Data Entry

i-SURVY SDN BHD · Part-time

Remote

  • Automated report generation with Python, cutting manual processing time.

Toolkit

A practical stack for full-stack systems, AI product surfaces, SDKs, and infrastructure.

Languages
  • TypeScript
  • JavaScript
  • Rust
  • Python
  • SQL
Frontend
  • Vue
  • Nuxt
  • React
  • Preact
  • Next.js
  • Expo
  • Tailwind CSS
  • Three.js
  • Shadow DOM
Backend
  • Node.js
  • NestJS
  • FastAPI
  • Elysia.js
  • Hono
  • AI SDK
  • LangGraph
  • REST
  • GraphQL
  • WebSocket
Databases
  • PostgreSQL
  • SQLite
  • Drizzle
  • Redis
  • MongoDB
Infrastructure & DevOps
  • Docker
  • CI/CD
  • Linux
  • Nginx
  • GitHub Actions
  • Bun
Tools & Practices
  • Git
  • TDD
  • Vitest
  • Jest
  • Playwright
  • Monorepos
  • SDK Design
  • GitHub Apps
  • Tauri
  • ElectricSQL

System design

A cleaner slice through the data flows and integration boundaries behind the work.

AI Trading Copilot

Tool-calling chat, streaming research runs, LangGraph decision pipeline, and gated broker execution.

MARKET CONTEXTAGENT RUNTIMEEXECUTIONpromptrunrecommendapprovequotescontextread/writefillsChat UIstreaming runsTool Routerschemas + toolsLangGraph Runanalysts + debateRisk Gatelimits + policyMarket APIsprices + brokerNews + Filingsfresh evidenceRun MemoryPostgresBrokergated ordersOrder Logfills + audit

Repro Feedback Platform

Framework-agnostic widget capture flowing into a self-hosted intake API and triage dashboard.

EMBED SURFACECAPTURE BUNDLEINTAKE + STORAGETRIAGEembedvisualeventsuploadmetadatawriteassetsqueriesopen issuestatusHost Appcustomer productSDK WidgetShadow DOMScreenshotvisual stateReplay + Logssteps + consoleIntake APIorigin + authPostgresreports + usersBlob Storemedia assetsDashboardtriage queueGitHubissue sync

Edge Sync Engine

Offline-first local state, ElectricSQL shape sync, Hono API routes, and Postgres-backed convergence.

CLIENT RUNTIMESYNC RUNTIMEAPI + DATABASEoffline writeschangespushsyncchangessubscriptionsread/writeRESTresolveapplyTauri AppsVi2 / V-DosingSQLitelocal-first storePWA Companionbrowser clientSync Queuedebounced writesElectricSQLshape syncShape Subspull + applyHono APIserver boundaryPostgressource of truthConflict Rulesmerge policy

Contribution activity

Contact

Have a system to build, a product to polish, or a technical problem that needs a reliable path forward?

© 2026 JJ Teoh

Built with Nuxt. Photographs shot through my telescope.