Jasman Tan

Software Engineer · Singapore

Jasman Tan

I build the unglamorous systems other people depend on: integration layers, databases that have to stay correct across time zones, and dashboards that factory operators use every shift.

Six years of that at an electronics manufacturer and a government-linked IT services firm — C#/.NET, T-SQL across a six-database SQL Server estate, and the SAP ERP integration that keeps five plants in four countries in sync. On my own time I ship smaller things end to end: a browser game, a party game with an AI referee, a credit-card optimiser, a home server that hosts all of it.

Full-time · Hybrid or on-site · Singapore
Open to backend or full-stack engineering roles.

Play Kubrix in your browser Résumé Email me

Selected work

Side projects, all of them running rather than half-finished. Several are private because they hold personal data; those are described, not linked.

Camp Nightfall

A phone-and-TV social deduction game refereed by an AI host instead of a person.

The problem

Social deduction games like Blood on the Clocktower need one person to run them, and that person never gets to play. I wanted a version where the referee is software.

What I built

A TypeScript monorepo serving three surfaces from one process: a private phone view, a shared TV view, and a PIN-gated host panel. Fastify 5 and Socket.IO for transport, React 19 on the client. The rules engine is a pure, deterministic package: game state is never stored, only an append-only action log plus the seed and settings, so the server replays a game from its log on boot and re-arms the phase timer — a mid-game crash or restart is survivable. Up to six seats can be AI players. Narration goes through an LLM with a 4-second timeout that falls back to offline templates, so the whole game still works with no internet at all.

Where it stands

Live from the home server through Cloudflare Tunnel: phones open /play, the TV opens /screen. One server process hosts one game at a time — it is an evening with friends, not a public multiplayer service.

Card Optimizer

Singapore credit-card optimiser: statement ingest, categorisation, and an assistant that can actually change things.

Private — self-hosted

The problem

Singapore reward cards have overlapping bonus categories and monthly spend caps, and the only honest way to know which card to use is to look at what you actually spent.

What I built

A FastAPI and SQLite app that ingests bank and card statement exports — including scanned PDFs, via Tesseract OCR — categorises transactions, tracks spend caps and bonus thresholds, runs budgets and reports, and recommends which cards to keep, cancel or apply for against a curated catalogue. Telegram and Discord bots for on-the-go queries. On top of that, an LLM assistant with tool use over the app's own functions: it reads and writes through the same code paths the UI uses, confirms before every write, supports undo, and keeps an editable memory file of the owner's rulings. It runs against either an API key or a signed-in Claude Code CLI.

Where it stands

In daily personal use. Self-hosted and private — it sits behind Cloudflare Access with an allow-list of one.

  • Python
  • FastAPI
  • SQLite
  • Tesseract OCR
  • LLM tool use

Jobgrab

A job aggregator and matcher for the Singapore software market.

Private — self-hosted

The problem

Job boards optimise for volume. Looking for a specific kind of role means re-reading the same postings across four sites every day.

What I built

A Python tool — standard library only, no dependencies — that pulls postings from four sources (the MyCareersFuture API, LinkedIn, Careers@Gov and employer feeds), deduplicates them, and scores each one against a structured profile with an explicit weighted formula over scope, salary, location and employer type. Salary resolves in a defined order: an officially posted range first, then a researched multi-source company band, then an assumption by employer type — and an estimate is never allowed to exclude a job on its own. Results are served as one interactive page from a local HTTP server, with application tracking and LLM-drafted cover letters.

Where it stands

Around 7,700 postings ingested and scored. Private by necessity — the generated page embeds a full resume and personal application notes.

  • Python (stdlib only)
  • HTTP scraping / APIs
  • Scoring model
  • LLM CLI

The Signal

A self-hosted AI-news dashboard that reads ~37 feeds so I do not have to.

Private — self-hosted

The problem

AI news is spread across vendor blogs, arXiv, Hacker News, Reddit and a dozen outlets that all cover the same story within an hour of each other.

What I built

A Flask server that keeps ~37 feeds pre-fetched in a background loop and persists the cache to disk, so the page opens instantly and a restart resumes from the last known items instead of hammering every source at once. A curator loop scores items through an LLM, pre-writes summaries, and rewrites a plain-text "taste" file that the scoring reads back — so rating things nudges future picks. The same story from several outlets collapses into one card naming the others, and a deduplicated Top 10 is the default view on phones. A morning push sends the day's picks over ntfy.

Where it stands

Runs continuously on the home server behind Cloudflare Access. No database — all state is JSON files next to the app.

  • Python
  • Flask
  • Feed parsing
  • LLM curation
  • ntfy

Baby Roadmap

A pregnancy and baby tracker for two parents to keep in sync.

The problem

New parents in Singapore keep the same information in three places: a development timeline, a feed and sleep diary, and a pile of half-remembered advice.

What I built

A single-page vanilla-JavaScript app — no framework, no build step — with a development timeline, a feed and sleep diary with pattern analysis, growth charts, a knowledge base and a family tree. Supabase provides Postgres and auth, with two parents syncing under a shared family code. Playwright end-to-end tests run over the real UI, and it deploys automatically on push to Cloudflare Pages.

Where it stands

In daily use by two people. Installable as a PWA.

The home server

Everything above that is self-hosted runs on one Windows mini PC in my flat. It is a small operations problem, and I treat it like one.

  • Public without opening a port

    All traffic arrives through a Cloudflare Tunnel, so the router has no inbound ports open and origin services bind to 127.0.0.1 only. Each hostname is an explicit ingress rule; the catch-all returns 404.

  • Private by default

    The personal apps sit behind Cloudflare Zero Trust Access with a one-person allow-list and email one-time codes — so a guest needs no account to be let in, and no hostname is ever exposed through the tunnel before its Access application exists.

  • Comes back by itself

    Each service is a logon-triggered scheduled task with its own start script. The machine signs in automatically on boot, so a power cut or a Windows update restores every site without me touching it.

  • Backed up, and honest about it

    A nightly PowerShell job archives every app's data folder, the environment files and the tunnel config, keeps 14 days and writes a log. It lives on the same drive, which protects against my mistakes and not against a dead disk — an off-machine copy is the next job on the list.

Skills

Things I have shipped with, not things I have read about.

Languages

  • C#
  • T-SQL / SQL
  • JavaScript
  • TypeScript
  • Python
  • PowerShell
  • C / C++
  • Java
  • Dart
  • GDScript

Back end & data

  • .NET
  • SQL Server
  • Stored procedures & performance fixes
  • PostgreSQL / Supabase
  • REST APIs
  • SAP ERP integration
  • ETL-style reporting
  • Timezone-correct multi-site data

Front end

  • HTML / CSS / JavaScript dashboards
  • React
  • Flutter (Android & iOS)
  • Responsive multi-language UIs (6 locales)
  • Three.js

Practice

  • Git & GitHub
  • GitHub Actions (CI/CD, Pages)
  • Playwright end-to-end tests
  • Change request → production → verification
  • L1/L2/L3 production support
  • Technical & functional documentation

Operations

  • Cloudflare Tunnel & Zero Trust Access
  • Scheduled services on Windows
  • Backup & restore
  • Docker / Compose (in progress)

AI tooling

  • LLM-assisted development workflows
  • Agentic scripts & tool use
  • LLM API integration with offline fallbacks

Experience

  1. Software Engineer, Manufacturing Systems

    Interplex Precision Technology · Singapore

    Dec 2021 – present

    • End-to-end delivery across a six-database SQL Server estate serving five plants in Singapore, Batam, the Czech Republic, China and India — requirements, T-SQL and workflow-engine implementation, dashboard front end, deployment and post-deploy verification.
    • Built and maintain the SAP ERP ↔ MES integration layer: goods issue and receipt, handling units, time-ticket outbound and the production-order inbound lifecycle, running across four countries.
    • Root-caused and fixed a production routing defect that was sending operator scans to the wrong work order, replacing iframe-focus heuristics with active-step resolution.
    • Built reporting dashboards over SQL Server — serial-number genealogy and traceability, per-operator labour, time-ticket and machine-timeline views — with plant-local time handling.
    • Designed a centralised six-language (EN/ID/CZ/ES/TA/ZH) translation system spanning dashboards and workflows, with Python tooling to sync translation sources.
    • L1/L2 support for HYDRA MES across the China and USA regions.
  2. Software Engineer

    NCS Pte Ltd · Singapore

    Apr 2020 – Nov 2021

    • Full-stack development, enhancement and maintenance of client applications in C#, HTML, JavaScript and SQL at a government-linked IT services firm.
    • Impact analysis, defect fixing, and technical design and functional specification documents.
  3. Unity3D Developer (Intern)

    Affinixy Pte Ltd · Singapore

    Apr 2019 – Dec 2019

    • Shipped a mobile game to Android and iOS: core systems, AI, NavMesh pathfinding, gameplay and UI/UX direction.

Certifications

  • Arcstone System Assessment — Intermediate

    Arcstone Pte. Ltd.

    July 2025

    arc.ops MES end-to-end configuration. Certificate ID ARC-SA-2025-002.

  • Certified HYDRA 8 Developer

    MPDV

Education

  • BSc Computer Science & Game Design

    DigiPen Institute of Technology, Singapore

    2015 – 2020

    First Place — Claude Comair Grand Prize for Game of the Year, DigiPen Game Awards 2019, for Kubrix, as a gameplay programmer (custom ImGui editor).

  • Diploma in Electronics, Computer & Communications

    Nanyang Polytechnic

    2010 – 2013

Full résumé Download PDF jasmantan@hotmail.com