Appearance
I ran the below script against the repo's I've been working on and asked Google Gemini 2.5/3.0 Pro to summarised what I've done.
bash
git log --author="$(git config user.name)" --since="1 year ago" --name-status --pretty=format:"%h - %an, %ar : %s" > my_commits_last_year.txtToolbox
| Scope | Tech |
|---|---|
| Frontend | React (incl. React 19), TypeScript, Next.js, Vite, Tailwind CSS, shadcn/ui, Apollo Client, MDX, Web Extensions (WXT) |
| Backend | Node.js, Bun, Python, TypeScript, Postgres (OLTP), ClickHouse (OLAP), Redis, GraphQL, Prisma, Drizzle ORM, BullMQ, Effect |
| Cloud & Infrastructure | AWS: ECS, ECR, RDS, ElastiCache, SQS, CloudFront, Route 53, S3, WAF, PrivateLink, IAM IaC: AWS CDK, Docker, Serverless Orchestration: Kubernetes (EKS), Karpenter |
| AI & Data | LLM Services: Anthropic Claude, Google Gemini, Extend AI, OpenAI API, AWS Bedrock Techniques & Libraries: OCR extraction, LLM evals, Clustering (HBDSCAN, K-Means), RAG, Dimension reduction (UMAP, PCA), Embedding (Tuning, Sentence-Transformers) |
| Observability & DevOps | OpenTelemetry, Grafana, CloudWatch, GitHub Actions, Nango |
| Developer Tools | Nix, Vim, Tmux, Colima, Claude Code, Opencode |
Work experience
Skip - Senior Product Engineer (Jan 2026 - Current)
Credit Decisioning Engine
- Architected and implemented an Automated Credit Decisioning Engine in TypeScript, comprising a highly extensible rule registry with Zod schema validation to evaluate loan applications across 27+ rules covering serviceability, income, housing, liabilities, identity, and credit file checks — outputting typed
PASS / FAIL / SKIPoutcomes for each. - Implemented a comprehensive suite of credit decision rules spanning identity verification (
passportCheck,driverLicenceCheck,medicareCardCheck,birthCertificateCheck,visaGrantCheck,acceptableIdType,acceptableIDCombination), credit file analysis (allLiabilitiesOnCCR,creditEnquiriesLast12Months,ageOfFile,rhi), and liability checks (noInvestmentProperty,noOffshoreLiabilities,noCreditFileHardship). - Implemented a human override mechanism allowing credit assessors to manually override any rule's
PASS/FAIL/SKIPstate, providing a controlled escape hatch for edge cases without bypassing the audit trail. - Designed a document reconciliation system that cross-references OCR-extracted liability data against Comprehensive Credit Reporting (CCR) entries, flagging discrepancies for assessor review.
- Integrated the Australian Business Register (ABR) API to validate ABNs during identity and employment verification checks.
- Led a multi-repo migration from application-level to per-applicant rules across 15+ rule families (credit score, enquiries, defaults, missed repayments, financial hardship, age of file, identity, liability tolerances), published via versioned typed API contracts and rolled out with zero-downtime deprecation of legacy rules.
- Built CCR liability reconciliation matching declared liabilities against Comprehensive Credit Reporting bureau data using LLM-assisted entity matching with canonical lender names, joint-account dedupe, account-type compatibility enforcement, and cross-applicant matching.
- Designed a rule lifecycle and assessor-feedback system — accuracy feedback per rule, testing-vs-production lifecycle separation, and a sign-off promotion path for calibrating automated rules into production with mandatory review comments.
- Established canonical document types and a document tagging system with a reconciliation classifier, bulk tagging runtime with source tracking, and tag-driven OCR document-type resolution.
AI-Driven OCR Extraction Pipeline
- Engineered a multi-provider AI OCR extraction pipeline leveraging Anthropic Claude, Google Gemini, and Extend AI to extract structured data from financial documents, with Zod-validated output schemas and
SCHEMA_MISMATCHerror logging with full Zod error details for debugging. - Built OCR extraction modules for 10+ document types: payslips (employer, salary, pay period), identity documents (passport, driver licence with both-side support, Medicare card, birth certificate, visa grant), and liability statements (BNPL, credit card, car loan, personal loan, home loan/mortgage, HECS/HELP).
- Developed a dedicated LLM evaluation framework (
evals) to systematically benchmark and score AI agent accuracy on document extraction tasks, with a CLI for running backtests with configurablecurrentIsodate context and Auth0-reuse for test sessions. - Added an OCR extraction trigger service with a dev-tool endpoint enabling on-demand extraction runs during development, integrated with LocalStack for local AWS emulation.
- Re-architected the extraction pipeline onto a durable workflow engine (Effect Workflow on AWS Lambda) with independent stages, consensus handling across re-runs, DLQ poison-message handling, and big-PDF text fallback with schema-mismatch recovery.
LEAP Assessment Dashboard
- Built the LEAP (Loan Evaluation & Assessment Portal) internal React/TypeScript dashboard from the ground up, providing credit assessors with a full view of automated decision runs, rule-by-rule outcome breakdowns, and supporting document panels.
- Migrated the frontend to TanStack Router, eliminating manual navigation typing and enabling type-safe routing across all feature areas.
- Enforced a feature-based folder architecture (replacing layer-based structure) with oxlint import rules, ensuring clear domain boundaries between
identity/,liabilities/,credit-decision/and other feature modules. - Built typed rule output UI components for every implemented rule, consuming the
ts-restcontract directly to ensure frontend/backend type safety without manual API typing. - Implemented a Vite dev server proxy for LocalStack, enabling the frontend to communicate with locally-running AWS services during development without environment config changes.
- Moved all Tailwind colours to shadcn design tokens for consistent theming across the dashboard, and added a
vercel.jsonfor production deployment.
Infrastructure & DevOps
- Deployed a globally distributed, WAF-protected AWS CloudFront distribution (Global Media Library) with signed URL generation, IP whitelisting (expanding /29 to /32 CIDR ranges), and PEM secret normalisation for Doppler-sourced certificates.
- Integrated OpenTelemetry distributed tracing across backend services, providing deep observability into OCR extraction workflows, rule evaluation pipelines, and external API calls.
- Built and maintained CI/CD pipelines in GitHub Actions, including skippable versioning workflows, action linting, and coordinated version contracts between
ts-restpackages across services. - Improved the offline dev CLI with warm deploy support, seed file renaming, and AWS region enforcement, reducing developer setup friction for local end-to-end testing.
- Hardened production observability and security — Better Stack dashboards and tuned alerting for the document pipeline, systematic PII/credential redaction across telemetry and logs, constant-time secret comparison, and a stored-XSS fix in the portal.
Open Source: effect-workflow-lambda
- Built and open-sourced
effect-workflow-lambda, a durable workflow runtime running Effect's@effect/workflowon AWS Lambda with pluggable persistence backends (MySQL, Postgres, Redis over SQS), three levels of handler abstraction, and one-command local deployment via Pulumi + LocalStack — production-proven on Skip's document extraction pipeline. - Collaborating directly with the Effect core team (including Effect's author) in a shared channel on the design of a serverless workflow/activity abstraction, contributing upstream feedback on
@effect/sqldialect support along the way.
AI Coding Agent Orchestration (SAO)
- Designed and built SAO (Session Orchestrator), a full-stack internal platform for managing concurrent AI coding agent sessions (Claude, OpenCode) across multiple repositories, built on the Effect functional framework with Bun, Postgres, and a pnpm/Turborepo monorepo.
- Implemented an end-to-end session lifecycle — on session creation: syncs and rsyncs base repos, checks out feature branches, installs dependencies in parallel, writes agent instruction files (
AGENTS.md), registers webhook hooks for agent notifications, persists to Postgres via Drizzle ORM, and spawns a tmux session with the agent pre-loaded with the Linear ticket as the prompt. - Built an agent inspection service that introspects running tmux panes — parsing process trees, computing CPU activity, and detecting agent state (
active,idle,need input) — feeding a 5-second state watcher that fires deduped SSE notifications (agent-done,agent-needs-input) to the web UI and CLI. - Integrated Linear GraphQL API for full ticket lifecycle management: auto-transitioning issues to "In Progress" on session start, posting AI-generated progress summaries (
sync) mid-session, and marking issues Done/Cancelled with a final summary on session close. - Built a PR review management system using the GitHub CLI and GraphQL API to sync inbound review requests and outbound PRs across all repos, with an AI-powered reviewer suggestion engine (Gemini 2.5 Pro) that matches PRs to reviewers based on their commit history and persona descriptions.
- Built a rate limit monitor that reads OAuth tokens from macOS Keychain (Anthropic) and local auth stores (OpenAI) to poll live usage against 5-hour and 7-day rate limit windows, surfaced in the UI.
- Implemented multi-provider transcript reading and cost tracking — parses Claude's JSONL conversation logs and queries OpenCode's SQLite database, computing session cost in cents using pricing tables covering Claude Sonnet/Opus/Haiku, GPT-5, and Gemini 3 Pro.
- Delivered a full-stack interface — a Bun/Effect HTTP API (with SSE, Scalar API docs, structured request ID logging), a React/TanStack Router web UI, and a
saoCLI — all sharing a singleapi-contractpackage as the source of truth for all types.
Developer Tooling & Code Quality
- Adopted
tsgofor pre-commit type checking, providing near-instant TypeScript validation on every commit without a fulltscbuild. - Implemented a custom ESLint rule enforcing single-object parameter style for
traceClassMethoddecorators, ensuring consistent observability instrumentation across the codebase. - Migrated all rule inputs/outputs to Zod schemas, enabling runtime validation, automatic TypeScript inference, and self-documenting contracts between the rules engine and its consumers.
- Introduced oxlint for fast JavaScript/TypeScript linting with feature-based import enforcement across both the backend service and the frontend dashboard.
Sauce - Senior Software Engineer (Aug 2024 - Dec 2025)
Infrastructure & Cloud Engineering (AWS CDK)
Provisioned an isolated "Recipe" microservice with AWS CDK, including a new VPC, RDS database with a secure bastion host, ECS deployment, Application Load Balancer, ECR repositories, and CloudFront delivery.
Architected a multi-stack CI/CD pipeline with GitHub Actions and AWS CDK, enabling automated, environment-specific deployments for services including
recipe-appand the main application.Engineered and integrated a production-ready ClickHouse cluster using AWS PrivateLink, establishing secure, private connectivity between the ECS services and the OLAP database. Configured bastion hosts and security groups to allow for secure SSH and database connections.
Simplified the platform by decommissioning the EKS cluster and removing Qdrant as a production dependency, eliminating an operationally separate vector database.
Integrated AWS Managed Grafana and AWS Chatbot, routing critical CloudWatch alarms to Slack for operational visibility.
Provisioned decoupled SQS workflows through CDK, including feedback-sync, customer-sync, and highlight-deletion queues.
Added declarative Karpenter auto-scaling for the Kubernetes-hosted Qdrant search service through AWS CDK.
Assisted in enabling GPU instances for ECS to empower the machine learning service, allowing the team to leverage more powerful models for data processing and analysis.
Architecture & System Design
Designed and implemented a full-stack "Graph of Thought" research agent for multi-step data analysis, spanning backend services, GraphQL APIs, Drizzle schemas, and frontend components.
Consolidated shared GraphQL schemas, types, and client configuration into a monorepo package, aligning the service, UI, and web-extension projects around shared contracts.
Designed summary persistence with MDX support for storing, retrieving, and rendering richly formatted AI-generated reports in the frontend.
Python Machine Learning Service
- Owned and re-architected the Python machine-learning service (keyphrase extraction, embeddings, topic clustering), restructuring it from flat scripts into a modular FastAPI service with layered
api/servicemodules and OpenAPI schemas consumed by the TypeScript backend via a generated client. - Reduced ML infrastructure complexity by replacing GPU-hosted sentence-transformer models with OpenAI embedding API calls, right-sizing ECS task definitions across US/EU staging and production and removing the torch/CUDA dependency chain.
- Led the decommissioning of Qdrant and the top-down trend clustering pipeline — deleting the SQS/S3-driven HDBSCAN/UMAP cluster generation system for highlight and keyphrase trends in favour of ClickHouse-backed queries, removing an entire vector database from production.
- Built a custom KeyBERT-based keyphrase extractor with curated stopwords, text cleaning, and full-text-search variants, tuned via high-load tests and lean generation paths to survive production volumes.
- Hardened the ML service for production: direct Postgres/ClickHouse connection pooling (replacing Prisma-python), dedicated health-check threads, graceful empty-input handling, queue throttling, and a Pipfile→uv migration.
Backend Development & Performance Optimization
Improved keyphrase-trend query performance with ClickHouse materialized views, moving intensive analytical work off the primary Postgres database.
Introduced ClickHouse as the OLAP filtering engine end-to-end — client, migrations, denormalised filterable-highlights tables, an advanced-filter query builder, and refreshable/materialized views — and led the multi-tenancy hardening effort adding indexed
orgIdscoping across all relational tables with batched backfill migrations.Bootstrapped a greenfield "Recipe" agent browser-testing service on Stagehand: GraphQL API with Drizzle/Postgres, auth, S3 image storage, OpenTelemetry, and staging/prod ECS deploy pipelines via GitHub Actions.
Improved Postgres performance by analyzing queries with
EXPLAIN, leading to targeted query and schema optimizations for critical data retrieval operations.Implemented Redis caching for frequently accessed data, including highlight counts and trend-run results, to reduce repeated database work.
Developed and secured a new API module with a comprehensive authentication and authorization layer, enforcing user-specific data access through database migrations and service-level logic.
Enhanced the backend research agent by adding a dedicated post-processing step for formatting reports, improving the quality, structure, and consistency of AI-generated output.
DevOps & CI/CD
Rolled out a semver release process using Git tags and GitHub Actions, automatically generating and publishing detailed release notes to Slack.
Integrated the Claude AI into the CI/CD pipeline for automated code reviews, helping to enforce coding standards, catch potential bugs, and improve overall code quality.
Configured and deployed OpenTelemetry across backend services, enabling distributed tracing and providing deep insights into application performance and request lifecycles.
Frontend Development
Led a significant frontend modernization effort by upgrading the main UI to React 19, refactoring numerous components to align with the new version's features while ensuring application stability and performance.
Adopted shadcn/ui and compositional patterns in the React codebase, improving consistency and maintainability while retaining tree-shakeable components.
Built and launched a new "Personal Feed" UI, providing users with a customized, dynamic, and engaging view of their data, complete with activity logs and trend visualizations.
Developed a feature-flagged, table-based view for browsing highlights, offering users an alternative to the existing list view with enhanced sorting, filtering, and bulk-action capabilities.
Upgraded the Chrome extension to Manifest V3, enhancing its functionality with new features and ensuring compliance with the latest browser standards.
Mirvac - Senior Front-end Engineer (Jan 2022 - Aug 2024)
- Achieved "Employee of the Quarter" for delivering mobile of allowing users digital access through the app.
- Led and implemented marketing website for a new building roll out, generating $500K in converted leads.
- Improved upgrade efforts of mobile app by moving to Expo prebuilds, reducing upgrade migrations from hours of manual diff checking to an automated 10 seconds CLI command.
- Improved React/code base by refactoring home-made solutions to industry libraries (react-query, react-table, and shadcn/ui).
- Improved React build time by 80% by switching from CRA to Vite and using Bun for Github Actions, reducing an average of 5 mins down to 1 in our CI/CD.
- Mentored new engineers through to their first PRs and provided detailed comments on best practices.
- Managed internal engineer scaling issues by automating several manual processes and providing documentation.
- Built a live retro feedback tool for other teams and initiated a company-wide hackathon.
Atelier - Full-stack Developer (Aug 2021 - Jan 2022)
- Enhanced the front-end by developing reusable components using SASS and Apollo Client, resulting in improved code maintainability and enhanced user experience.
- Implemented a robust backend infrastructure using Prisma, Nexus, and Apollo Server, ensuring seamless CRUD operations and optimal performance.
- Established a comprehensive end-to-end testing framework using Cypress and integrated it with Circle CI, enabling automated testing on every branch push and enhancing code quality.
- Designed and developed a sophisticated messaging system with GraphQL subscriptions and a Postgres pub/sub system, delivering real-time communication capabilities similar to Slack.
- Led the migration of the existing Postgres database to AWS, leveraging the cloud platform's capabilities to enhance control, scalability, and uptime, ensuring a more robust and reliable database infrastructure.
Appian - Solution Engineer (Jan 2020 - Jul 2021)
- Demonstrated expertise in supporting various components of the Appian stack, including application servers (Tomcat, JBoss), web servers (IIS, Apache), RDBMS (MySQL/Mariadb), Apache Kafka, Elasticsearch, and integrations with Appian.
- Proficiently handled additional technologies such as AWS Cloud architecture, networking/VPN (IPsec), Linux (SSH/busybox tools), accessibility compliance (WCAG), and resource contention management (CPU/Memory/Threads).
Contract work
Patch - Senior Software Engineer (Contract) (Aug 2026 - Current)
- Building a full-stack geospatial platform serving NSW cadastre (property parcel) data — lot lookup API, Mapbox Vector Tile streaming, and an ArcGIS REST compatibility layer.
- Designed a zero-downtime snapshot sync flow that imports ESRI FileGeoDatabase exports via GDAL into PostGIS staging tables, validates the snapshot, and atomically promotes it while existing API routes continue serving the previous data.
- Implemented geospatial delivery integrations for Mapbox Vector Tiles, PMTiles served from Cloudflare R2, and a constrained ArcGIS REST-compatible query endpoint.
- Stack: Bun, Effect v4
HttpApiwith schema-derived OpenAPI docs, Drizzle, PostgreSQL 16 + PostGIS (GiST spatial indexing), React 19/Mapbox GL dashboard, and Railway infrastructure-as-code.
Fullsuite - Senior Software Engineer (Contract) (Sep 2023 - Nov 2024)
- Implemented POC with encryption using libsodium CHACHA20-POLY1305 and exposed through Expo Modules.
- Building Auth, Mobile (Expo), Web app (react), back-end (HonoJS, Turso) for a new startup.
Pitbull BSC - Front-end Developer (Contract) (Mar 2021 - Jan 2022)
- Implemented a Telegram price bot using Node.js, AWS Gateway, AWS Lambda, and Serverless (SLS).
- Developed PitStop, a Next.js application utilizing ethers.js and web3modal for future application efforts.
- Built PitChart, a GraphQL-powered data visualization tool displaying OLHC data over time using react-financial-chart.
Speaking & Presentations
- Codex For Founders Sydney (Jun 2026): Presented on agentic coding workflows and codebase design for AI agents at the Codex community event, Stone & Chalk Tech Central. [Event] [Slides]
- AWS Startup Dev Day Sydney (Sep 2025): Co-presented "Real-time analytics with Sauce AI and ClickHouse" alongside ClickHouse Solutions Architect Johnny Mirza. [Slides]

Education and Certifications
University of New South Wales (UNSW) - Bachelor of Engineering (Honours) / Commerce (2014 - 2020)
- Major: Mechatronics and Information Systems (Credit average).
- Honours thesis (Distinction): Integration of communication platforms across different operating systems.
Amazon Web Services
- AWS Developer Associate Certification (Score: 905/1000)
Open source contributions and Blog
- "You should build your own agentic harness" (Skip engineering blog, Mar 2026) — eleven practical principles for making codebases and workflows agent-friendly: operational frameworks like Effect, predictable code patterns, custom linting for architectural constraints, and session-type-aware model/token budgeting.
- effect-workflow-lambda (Durable Effect workflows on AWS Lambda) - Author/maintainer, developed in collaboration with the Effect core team (repo)
- Honojs (Lightweight Express) - docs: update typo and add warning to #url() to use absolute URL (#203)
- Outstatic (Git-based CMS) - fix: author name check (#169)
- borabaloglu/cmdk-base - [core] Update useId dependency (#3)
- NangoHQ/nango - docs: update rate limit code snippet (#3066)
- NangoHQ/nango - fix: update error message for provider key missing (#2622)
Projects
Cave — Founder & Engineer (2026 - Current)
- Link: getcave.ai
- Side project and stealth startup with an early user base, building real-time collaborative messaging with channels, threads, task boards, and AI agent integration across web, desktop (Electron), and mobile (React Native/Expo).
- Local-first architecture using TanStack Electric with client-side SQLite, backed by a Hono/tRPC/Drizzle/Postgres API built on Effect.
- Cloudflare and Railway infrastructure with GitHub Actions CI/CD, shared web/Electron/mobile packages, and deterministic scene-based QA for seeded environments.
Hayom
- Link: Hayom - Source: GitHub - Linear clone
- Used Evolu for sync engine layer.
- Utilized
xstate/storefor efficient keyboard shortcut handling.
Linear Clone
- Link: Linear clone - Source: GitHub - Linear clone
- Implemented browser-based database technology with <100ms write and read speeds (eliminating network round trips).
- Utilized
xstatefor efficient keyboard shortcut handling.
Real-time Retro
- Link: Real-time retro - Source: GitHub - Real-time retro
- Implemented a pub/sub architecture using Ably and established a leader-follower distributed network between browsers.
PDF Highlighter
- Link: PDF highlighter - Source: GitHub - PDF highlighter
- Developed a recursive file structure with drag-and-drop functionality using dnd-kit.
- Implemented a PDF annotator using
pdf.js.