Work

Built, shipped, owned.

Most of what I've shipped lives behind OneIT customer logins. The case studies below are anonymised — same systems, real architecture, real stack. Metrics are being filled in as I confirm what I'm allowed to publish.

Featured · Independent client work · 2025

The Sprachkraft

Language & study-abroad consultancy. Multi-page Next.js production site, end-to-end in one day.

What I built

  • • 7-page Next.js production site, App Router + TypeScript.
  • • Bilingual content scaffolding for English / German routes.
  • • Contact + lead-capture flow with WhatsApp deep-link CTA.
  • • Deployed to Vercel; custom domain on day one.
  • • Wrote the README and handed off the keys.

Scoping → live

1 day

Pages

7

Stack

Next.js · TS · Tailwind

Inside OneIT · Selected work

Four systems I've had my hands on.

Client names removed. Architecture, stack, and outcomes are real.

Multi-site platform · Industrial operations

Hub-and-spoke CMS for a national mining-services operator

An Australian mining-services operator running independent site instances of the same Java platform across geographically distributed locations.

Problem

Each site needed to run autonomously — collecting equipment telemetry, alerts, and operational events into its own database — while feeding a central server for cross-site analytics, executive dashboards, and disaster-recovery backup.

Approach

  • Java + Angular application deployed as independent site instances, each with a local PostgreSQL/TimescaleDB store for time-series equipment data.
  • SymmetricDS hub-and-spoke replication: sites act as leaf nodes, replicating writes to a master server asynchronously with conflict resolution and staged onboarding for new sites.
  • Ingestion pipeline for device-generated JSON payloads — alerts, telemetry samples, event history — with unit conversions, custom alert-threshold evaluation, and email notifications.
  • Grafana dashboards over the central database for cross-site fleet analytics; periodic sync from a secondary MS SQL Server for machine metadata.
  • RAG conversational agent on top of live metrics + a PDF manuals knowledge base (embeddings) so on-site staff can ask natural-language questions over equipment history.

Result

{TODO: e.g. 'X sites onboarded · Y million events/month replicated · zero-downtime central failover'} — fill in.

JavaAngularPostgreSQL · TimescaleDBSymmetricDSGrafanaDockerRAG · EmbeddingsPython

Compliance LMS · Australian RTO sector

End-to-end LMS for a national Registered Training Organisation

A national Australian RTO needing a single platform to author courses, deliver them online, issue regulator-recognised certificates, run their billing, and stay compliant with national identifier rules.

Problem

Replace a fragmented stack (separate course, finance, and certificate tools) with one Angular + Java platform that owned the full learner journey — from enrolment and payment through to government-issued credentialing.

Approach

  • Course authoring + delivery surface: lessons, assessments, learner progress, certificate generation on completion.
  • Mailouts / lifecycle email: enrolment confirmation, due-date reminders, expiry warnings, certificate dispatch.
  • Finance module — invoice generation, reconciliation, refunds — with two-way Xero accounting integration so finance staff never re-key a transaction.
  • Eway payment gateway integration for card-on-file enrolments and recurring training subscriptions.
  • USI (Unique Student Identifier) integration with the Australian government registry for compliant credential issuance — a hard regulatory requirement for any RTO.

Result

{TODO: e.g. 'X learners onboarded · $Y/month routed through Xero · USI verified at enrolment in <Z seconds'} — fill in.

Angular (modern)Java · SpringPostgreSQLXero APIEwayUSI Registry APIPrimeNGPDF generation

AI-first improvements · Platform-wide

Bringing LLMs into the production stack, end-to-end

Cross-cutting AI work spanning OneIT's product family — moving from "we use ChatGPT to draft" to AI features running inside the products customers pay for.

Problem

Make LLM features cheap, accurate, and testable enough to ship to production: not a demo, not a side-tool — features that real users hit.

Approach

  • RAG retrieval over operational corpora — equipment manuals, internal documentation, historical tickets — chunked, embedded, and served behind product-specific assistants.
  • OCR pipeline for ingesting paper-trail documents (forms, certificates, invoice PDFs) into structured, queryable records.
  • MCP-style tool layer giving the LLM controlled access to live product APIs — read metrics, draft updates, surface evidence — instead of free-form generation.
  • DPO (Direct Preference Optimisation) fine-tuning on collected agent responses so the assistant matches the company's voice and business rules without prompt-bloat.
  • AI-assisted test automation — generated UI/API tests, regression checks, and assertion synthesis layered onto the existing release pipeline.

Result

{TODO: e.g. 'cut analyst look-up time from X→Y · regression suite expanded by Z% with no headcount add'} — fill in.

PythonRAG · Vector DBOCRMCP toolingDPO fine-tuningTest automationJava integration

Interactive canvas · Payments tooling

Drag-and-drop payment-slip builder on Paper.js

An internal payments-tooling product where finance users compose interactive payment slips and forms visually — small audience, but a sharp UX problem.

Problem

Standard form builders couldn't express the spatial, drawing-on-paper feel finance staff wanted. Needed a real canvas surface — drag, snap, layer — without dropping out of Angular.

Approach

  • Paper.js canvas embedded in an Angular 19 component, with a state bridge so the canvas tree round-trips cleanly to the existing form-definition model.
  • Custom snapping, alignment guides, and multi-select; serialisable canvas state so designs version and review like the rest of the product.

Result

Niche internal tool — small user base by design. Included here as a clean example of bringing a non-React / non-DOM rendering library into a modern Angular app without leaks.

Angular 19Paper.jsTypeScriptPrimeNG

Day job · 2022 — present

OneIT — three years, three promotions.

Senior Software Engineer L3 on OneIT's Australian engineering team. Backend, integrations, AI, and release cycle.

  • Aug 2022

    Junior SWE Intern

    Joined right after BCA.

  • Jan 2023

    Junior Software Engineer

    First promotion. Java + Angular work on the Cougar platform.

  • Oct 2023

    Software Engineer

    Owned Cougar infrastructure features, APIs, JSON/XML transports, Postgres.

  • Oct 2024

    Associate Senior SWE · Mid Developer of the Year 2024

    Stack expanded into Python/Flask/Twilio/Ionic. Award signed by MD David Barton.

  • 2025

    Senior Software Engineer L3 · Runner-up, Employee of the Year 2025

    Company-wide recognition. Lead on integrations and release cycle for the AU engineering team — from Faridabad, six AEDT timezone hours away.

  • Outside OneIT

    Side things I've built.

    Spring Boot · Angular · Postgres

    Employee Management System

    Full CRUD with auth — REST APIs, login, role-based access. Solid Java/Angular showcase from the OneIT-era stack.

    Weekend-sized

    Lab — coming soon

    Manga tracker, coffee + commits dashboard, chess opening trainer. Pick one. Ship in two weekends.

    The 2022 HTML/CSS portfolio, TextUtility, and Sudoku Solver are retired with thanks. They were good for what they were.