Portrait of Guru Prasath in a light blue shirt, looking toward the camera.Images rotate automatically every few seconds.

Singapore-based software engineer

I build software that makes complex systems easier to trust.

From computer-vision products and local AI tools to data pipelines, APIs, and connected devices, I turn ambiguous problems into practical, measurable systems.

NUSMaster of Technology in Software Engineering

SUTDComputer Science & Design graduate

A working method

The question behind the projects.

  1. Start from the constraint.

    Retail sizing charts, slow health exports, screenshot overload, and agent-data restrictions all make the useful path clearer.

    See the constraints
  2. Measure before declaring victory.

    Benchmarks and small experiments reveal which part of a system deserves the rewrite—and which part should stay boring.

    See the measurements
  3. Make the decision inspectable.

    Receipts, provenance, documentation, and safe-to-trash behavior let the next person understand what happened and why.

    See the decisions

Selected work / field notes

A sequence of systems, constraints, and the decisions that made them easier to inspect.

Things I've built, and what they changed.

Five chapters from current experiments, a product with outside proof, and work inside existing systems. The common thread is making the next step clearer.

2026 / policy gateway

An agent’s permission is not enough; its evidence matters.

MandateFlow places a policy gateway between an agent and protected tools, checking the provenance of the information behind an action.

A support request can become a CRM case when its lineage is allowed. A payment-failure request can look similar while carrying a different data boundary.

MandateFlow diagram showing a provenance-aware gateway separating allowed and denied tool calls.

Same-looking request. Different lineage. Different outcome.

Constraint
The same public call can arrive with different references, so permission alone cannot explain whether the next tool call is safe.
My role
Team project. This page keeps my individual contribution at the system level until the final scope is documented.
Decision
Use a Go MCP gateway to resolve provenance, apply policy, and write a redacted receipt before the protected tool runs.
Evidence
Support → CRM is allowed; payment → CRM is denied before execution, with an aggregate payment-failure path that does not re-identify a customer.

One honest limit

The public project status and final contribution boundary still need a release review before this becomes a full case study.

  • Go
  • MCP gateway
  • React / Fastify
  • SQLite receipts

2026 / performance study

The slow path was not where I first thought it was.

Apple Health imports started as a parsing problem. Profiling showed a different shape: Python object creation and per-record work were holding the file hostage.

The documented test used a 626 MB export with 1.35 million records, workouts, and activity summaries.

Constraint
A six-month export took about 26 minutes, and the bottleneck lived in the ingestion architecture rather than one slow database query.
My role
I profiled the importer, corrected the bottleneck hypothesis, and rewrote the hot path around memory-mapped byte scans and parallel workers.
Decision
Skip the XML tree for record extraction, emit Parquet shards, and let DuckDB assemble the results after the expensive work is parallelized.
Evidence
Reported 26 min → 9.77 s in the documented test environment. The result is a benchmark, not an unqualified production SLA.

One honest limit

The number is tied to the stated machine, export, and test date; larger exports still need their own benchmark before making a promise.

  • Python
  • mmap
  • Parquet
  • DuckDB
  • ProcessPoolExecutor

2026 / local-first desktop tool

A screenshot cleaner should not send your desktop to the cloud.

Screenshot Declutterer turns a desktop full of unnamed captures into a local keep / unsorted / trash workflow, with optional on-device rename suggestions.

The useful part is small: recognize what a screenshot is, make the filename searchable, and let the person decide what happens to the file.

Screenshot Declutterer before-and-after visual showing a filename suggestion turning a timestamped screenshot into a descriptive name.

A timestamp becomes a useful filename while the image stays local.

Constraint
Uploading screenshots just to classify or rename them would defeat the privacy premise. Permanent deletion would make a mistaken decision expensive.
My role
I built the local triage flow and evaluated the vision rename path on a 16 GB Apple Silicon Mac.
Decision
Use LiteRT-LM with Gemma 4 E2B locally, and move discarded files to the native Trash through send2trash rather than deleting them permanently.
Evidence
Across 39 screenshots, LiteRT-LM averaged 6.5 s per image versus 20.9 s with Ollama; the model footprint fell from 7.2 GB to 2.4 GB.

One honest limit

macOS is the tested platform. Cross-platform support is intended, not a shipping claim.

  • Python
  • Flask
  • LiteRT-LM
  • Gemma 4 E2B

2024—25 / computer-vision product

Fitback made a retailer’s size chart feel personal.

Fitback connects two user photos and retailer-specific sizing data to a recommendation that includes a person’s fit preference.

Fashion sizing is difficult because a generic chart cannot see the difference between a standard, tight, or loose fit preference.

Constraint
The system had to turn messy sizing charts and body-pose input into something practical enough for a Shopify purchase flow.
My role
Technical project lead / self-employed. The final split across product, ML, frontend, backend, and team leadership is kept broad here until confirmed.
Decision
Combine pose validation and 17 keypoints with an MNASNet + MLP recommendation path, and use AWS Textract to extract retailer chart data.
Evidence
LinkedIn reports approximately 2 cm mean absolute error and 0.1 s inference. Fitback won the DesignAI category at InspireCon 2025 and was covered by The Business Times.

One honest limit

The award wording, media assets, and exact personal contribution should be confirmed before this chapter is promoted above the current measured work.

  • Shopify Remix
  • AWS Textract
  • MoveNet / PoseNet
  • MNASNet + MLP
A close portrait of Guru Prasath, framed against a bright interior background.

Learning / ongoing

Build it, then bring it with you.

I built an AWS quiz tool from practice questions, then used it on the MRT on the way to climb. The best learning systems have somewhere to go.

2023—24 / professional foundation

Making existing systems safer to change.

At Primech, the work moved between robot dashboards, REST APIs, authentication, IoT sensor data, internal applications, and documentation.

The systems were already in motion. The job was to improve the next change without losing the context held by the existing codebase.

Constraint
Legacy Flutter and PHP tools, real-time widgets, and authentication issues made small changes depend on understanding more than one layer.
My role
I worked across dashboard CRUD APIs and UI, JWT authentication issues, JavaScript refactoring, Python IoT services, Flutter, PHP, and architecture documentation.
Decision
Treat documentation and system boundaries as part of the implementation, so the next person can trace a request from the interface to the device.
Evidence
The two R&D internships covered robot dashboard work, a Python IoT backend, legacy-code modernization, internal tooling, and older-system documentation.

One honest limit

Client information, internal code, service URLs, and proprietary screens stay out of the portfolio.

  • JavaScript
  • REST APIs
  • JWT
  • Python IoT
  • Flutter / PHP

A compact chronology

Curious by default. Practical when it counts.

I studied Computer Science and Design at SUTD. The projects below are the earlier layer of the same habit: make something small, use it, and notice what the next person needs.

Work context

  • Aug 2023 — Jan 2024

    Software Engineer Intern — R&D

    Primech A&P Pte Ltd

    Improved robot dashboard APIs and UI, worked through JWT authentication issues, refactored JavaScript, and supported a Python IoT platform.

  • Apr 2024 — Sep 2024

    Software Engineer Intern — R&D

    Primech A&P Pte Ltd

    Updated a legacy Flutter codebase, helped build a PHP personnel application, produced a CESG promotional video, and documented an older system.

  • Nov 2021 — Jan 2022

    Teaching Assistant — Intro to Python Programming

    Singapore University of Technology

    Facilitated Python instruction, mentored students on coursework and projects, and coordinated IoT lab setup with Raspberry Pi.

Earlier experiments

range, kept small
DetectT prototype showing original and mirrored camera feeds with a pose skeleton overlay.

Computer vision / pose detection

DetectT

JavaScript / TensorFlow.js / MoveNet / PoseNet / CanvasRead README
HealthMate project board showing a fitness dashboard, phone screens, and Google Fitness integration flow.

Fitness / mobile

HealthMate

Java / Firebase / Google Fitness
InvoiceHub project image showing receipt OCR extraction and the application's interface.

Full-stack / OCR

InvoiceHub

AWS OCR / MySQL / Agile / Figma
3D Angry Bird Space project screenshot showing a bird-shaped model in a block-based scene.

Graphics / physics

3D Angry Bird Space

OpenGL / C++ / Physics engine
Atari Breakout project screenshot showing the paddle, ball, and rows of coloured bricks.

Game / C

Atari Breakout

C / SDL2
Aircon Balance Bot project screenshot showing a GitHub repository with Python bot files.

Automation / Python

Aircon Balance Bot

Python / BeautifulSoup / Selenium