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, embedded computer vision, and desktop analytics — then make them clear enough that people actually use them.

See the headline 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

The headline
work.

Two flagship systems I designed and built end to end — KNetraHub and the PLXY AI Call Center — joined by an IoT concept and a small studio tool. Each is documented publicly with its own live site: the architecture, the setup path, and an honest account of what has and has not been proven.

01 — Flagship · 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 — Flagship · 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 — IoT concept 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.

04 — Studio tool PLXY founder & product owner · v1.0.0
Claude Organization Usage Monitor app icon

Claude Usage Monitor

“Windows desktop application for Claude organization owners — adoption monitoring, Weighted Usage Index, low-usage alerts and management reports from official Anthropic APIs.”

A small studio tool — a native Windows application shipped under PLXY — that answers the question every Claude rollout eventually gets asked: who is actually using this? It reads only officially supported Anthropic Admin APIs and official CSV exports — no scraping, no browser automation, strictly read-only — and turns them into dashboards, alerts and reports a manager can defend line by line in front of a finance committee.

  • A number you can defend, not one that looks good — the Weighted Usage Index scores each account against configurable targets, weights and contribution caps, and shows the formula, policy version and per-metric breakdown in the UI and in every export.
  • Missing data is missing, never zero — every data category is probed and shown as Available or Unavailable with the reason, so nobody is flagged a low performer because of an API gap in their plan.
  • Alerting with governance — thresholds per group, new-user grace periods, duplicate suppression, and a fully audited Alert Exemptions register. Monitoring only: accounts are never modified and conversation content is never touched.
  • Seven export formats from one snapshot — PDF, XLSX (11 worksheets), DOCX, PPTX, CSV, HTML and JSON, so exported numbers exactly match the screen. API keys live in Windows Credential Manager, never in a file.
Python 3.12PySide6 / QtSQLAlchemy httpxpandasReportLab PyInstallerWindows 10 / 11

Proprietary software — the source repository is private, so unlike the other headline projects there is no public code link. The documentation, download page and SHA-256 checksums are public, and Demo Mode runs the whole application on an anonymized synthetic organization, no credentials needed.

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.