Phnom Penh · Cambodia

Finance meets technology.

I am Phirum — a banking professional and hands-on technologist. I build the unglamorous systems that operations teams live inside: infrastructure portals, AI telephony, and embedded computer vision — then make them clear enough that people actually use them.

See the flagship work
0Flagship systems
0AICC checks passing
0Apps in KNetraHub
Public repositories
01 / About

Two worlds.
One perspective.

My work sits at the intersection of financial services and technology. Banking taught me operational discipline — reconciliation, auditability, and the cost of an unclear process. Building taught me that most of those problems are solvable in software if you refuse to hide the complexity behind a demo.

The approach

Understand the real problem. Make the system clearer. Ship something people can actually operate.

Business grounded

Customer needs, operational realities, and measurable value come before novelty. A system that nobody can run on a Tuesday morning is not finished.

01

Verified, not asserted

Test gates run in CI on every change, end-to-end suites boot the real services, and QA numbers are regenerated from the reports rather than typed into a README.

02

Honest about limits

Every project states what it has not proven — carrier certification, real-driver validation, load and soak. Naming the gap is part of the engineering.

03
02 / Achievements

Flagship
systems.

Three systems I designed and built end to end — each documented publicly, each with its own live documentation site. Open any of them and you get the architecture, the setup path, and an honest account of what has and has not been proven.

01 — Infrastructure Founder & author · v0.1.9
KNetraHub app icon

KNetraHub

“Khmer Netra Hub — a portal for everything in your infrastructure, one hub at a time.”

Self-hosted infrastructure operations behind one login, one theme, and one audit trail. A single Nuxt application presents a portal shell — launcher, sidebar, permissions, notifications, audit — in front of a growing suite of operations subsystems. Each subsystem is a Nuxt layer that merges into one in-process build: no micro-frontends, no iframes, no module-federation remotes. One image, one deploy.

  • Six operations apps ship as layers — Docker Swarm console, Monitoring (a clean-room LibreNMS equivalent), Work (ClickUp equivalent), Privileged Access, IP Management, and Database Manager.
  • Database per module on PostgreSQL + TimescaleDB with raw parameterised SQL and no ORM; disabling an app stops its work but keeps its data.
  • Encrypted at rest end to end — LDAP binds, OIDC secrets, registry auth, SNMP credentials and the PAM vault under AES-256-GCM, with envelope encryption and a versioned master key.
  • Scales horizontally with no broker — the database itself coordinates through advisory locks, lease-based job queues and LISTEN/NOTIFY. No Redis, no message bus.
Nuxt 4Vue 3Nuxt UI 4 Tailwind v4PostgreSQLTimescaleDB Docker SwarmKeycloakPlaywright
02 — AI telephony Architecture & build
PLXY AI Call Center app icon

PLXY AI Call Center

“Enterprise AI call center between the Cambodia Telco SIP trunk and the 3CX PBX agent pool.”

Five separated services plus a shared scenario-schema library. A visual studio edits call scenarios as graphs; a worker executes those graphs per call against a pluggable ASR/LLM/TTS provider; a voice gateway drives FreeSWITCH over the Event Socket and hands live calls to 3CX agents. Every service is self-contained — own build, tests, Dockerfile — and liftable into its own repository.

  • 844 automated checks, 0 failures in the 2026-08-09 QA campaign, with totals regenerated from the gates' own JUnit reports rather than hand-written.
  • A real cross-service end-to-end suite boots the actual API, worker and gateway against a real PostgreSQL 18 — and found two defects every project's own green suite had missed.
  • Two Docker Swarm stacks so the telephony half can live on a DMZ host: exactly three ports cross the boundary and every credential is a Swarm secret, never an environment variable.
  • Per-tenant row-level security in PostgreSQL 18 under a three-role authorisation model that combines as a union.
Spring Boot 4Java 25Nuxt 4 Vue FlowFreeSWITCH 1.10PostgreSQL 18 Docker SwarmSIP / RTP

Carrier onboarding, 3CX trunk provisioning and TLS/SRTP hardening are external steps the repository documents but cannot self-certify. The bundled AI provider is a deterministic simulator; real providers plug into the worker's SPI.

03 — Embedded vision Research prototype
DrowsyGuard MCU project icon

DrowsyGuard MCU

“Low-cost, camera-based driver drowsiness detection designed for retrofit into older vehicles.”

Risk is measured from eyelid closure over time, not from a whole-face “does this look drowsy” classifier — because a face classifier trained on DDD learned to recognise drivers rather than drowsiness. Eye closure is the mechanism itself, and it is cheaper on device: the model input is a 32×32 eye patch.

  • A seven-wire build on an ESP32-S3-WROOM-1 N16R8 with an OV3660 camera and an I2S class-D amplifier. No display — the board serves its own Wi-Fi access point and a live MJPEG preview.
  • 11.3k parameters, ~0.9 ms per frame for both eyes: a tiny grayscale CNN INT8-quantised to .espdl, realistic for an ESP32-S3.
  • Four fused cues, not one — PERCLOS (0.55), long and slow blinks (0.20), yawning (0.15) and head nodding (0.10), each measured against a rolling per-driver baseline so face shape and camera angle cancel out.
  • Sneezes are detected in order to be ignored: a sneeze slams the eyes shut for about a second, which a naive detector scores as a microsleep. Recognising it suppresses the false alert.
ESP-IDFESP-DLC++ PythonPyTorchONNX OpenCV YuNetINT8

Research prototype, not a certified automotive safety device. Splits are subject-independent by principle, so no driver — and no adjacent frame of one clip — leaks across train and test.

03 / Public work

Projects,
live from GitHub.

Every public repository is loaded straight from the GitHub API, grouped into focus areas. Filter by what a project is for, search across names, languages and topics, or switch to the compact list. New public work appears here without a site update.

Loading public repositories…
Public repositories
Stars earned
Languages used
0Live doc sites
04 / Contact

Have an idea worth building?

I am open to thoughtful business collaboration — product partnerships, pilot deployments, enterprise integrations, and applied AI or infrastructure work.