Senior AI Automation Engineer

Anh
Trinh

Full-Stack Software Engineer

Most recently the only engineer on an Australian outsourcing firm's internal automation — event-driven AWS pipelines with Claude as the assessment layer, built on the tools the business already ran on. Backed by 7 years shipping production web, mobile and cloud systems across four countries' clients.

Open to new roles location_on Sydney, NSW verified_user Full working rights
Anh Trinh, Senior AI Automation Engineer based in Sydney
workspace_premium
Western Sydney Uni
M.ICT Distinction
smart_toy
AI in production
Claude · Bedrock · RAG
cloud_done
Lambda · SQS · DynamoDB
Event-driven AWS

Most recently

Sole engineer on an automation programme in Sydney

Senior AI Automation Engineer at Outsourced Staff Pty Ltd, reporting directly to the Founder and CEO. The brief was unusual and I liked it: take a description of how a team already works and turn it into automated flows on the tools they already have — no process change, nothing new for anyone to learn.

That meant owning the work end to end — scope and estimate, architecture, build, testing, release, and the runbook someone else can operate it from.

Jun 2026 – Aug 2026 Hybrid · Contract Full history arrow_forward
HR Tech

Candidate Automation

arrow_forward

An AWS serverless pipeline that turns Lever ATS activity into client-ready candidate scorecards, with Claude as the assessment layer. Handled around 50 candidates a month and saved each recruiter one to two hours of manual data entry, while keeping a human in front of every client-facing document.

  • Scope and estimate agreed with the Founder and CEO before any code existed, walking the existing recruiter workflow through together to settle what was worth automating and what to leave alone; each phase was demonstrated back against real Lever data.
  • Built with Claude Code: the implementation plan drafted and revised in planning mode, the approved plan run in auto mode, and every generated diff read before it merged — a widened IAM permission, a swallowed error or an unplanned dependency went back to the plan rather than being patched in the diff.
  • Every merge gated in GitHub Actions on unit, integration and live end-to-end suites against the real Lever, Google and Slack APIs, plus a data completeness test that fails the build if a candidate field goes missing between artifacts.
  • Duplicate output files traced to Lever retrying against the 29 second API Gateway timeout, fixed by splitting the fast signature-verifying endpoint from a 120 second SQS worker handling CV parsing, image downloads and Drive writes.
  • Every write safe under at-least-once delivery: DynamoDB provisioning locks, Google Drive appProperties as the file identity rather than the file name, and checksum change detection, with scheduled EventBridge sweeps and a dead-letter queue catching anything that still failed.
TypeScript AWS Lambda SQS + DLQ DynamoDB EventBridge Claude API Google Gemini Claude Code Lever ATS Serverless Framework GitHub Actions
500k+ requests load-testedHighly available AWS architecture — no disruption, no data loss
60+ brands on one platformMulti-tenant commerce platform maintained without cross-tenant impact
3 time zones, asyncUS product owner, European engineers, delivery from Vietnam
6.438/7 Master of ICTWith Distinction, Western Sydney University — nine HD subjects

The stack, in two layers

hover any badge for detail
AI & Automation
smart_toy
Claude / Anthropic API
neurology
AWS Bedrock
search_insights
RAG
travel_explore
OpenSearch
bolt
AWS Lambda
queue
SQS + DLQ
table
DynamoDB
schedule_send
EventBridge
deployed_code
Serverless Framework
workspaces
Google Workspace APIs
auto_awesome
Google Gemini
terminal
Claude Code
picture_as_pdf
Handlebars + Puppeteer
smart_toy
Claude / Anthropic API
neurology
AWS Bedrock
search_insights
RAG
travel_explore
OpenSearch
bolt
AWS Lambda
queue
SQS + DLQ
table
DynamoDB
schedule_send
EventBridge
deployed_code
Serverless Framework
workspaces
Google Workspace APIs
auto_awesome
Google Gemini
terminal
Claude Code
picture_as_pdf
Handlebars + Puppeteer
Full-Stack Foundation
code
TypeScript
widgets
React & Next.js
change_history
Angular
sync_alt
RxJS & NgRx
javascript
Node.js
coffee
Java & Spring Boot
php
PHP Laravel
database
PostgreSQL & SQL
cloud
AWS Cloud
smartphone
Kotlin & Swift
package_2
Docker & CI/CD
brush
Tailwind CSS
code
TypeScript
widgets
React & Next.js
change_history
Angular
sync_alt
RxJS & NgRx
javascript
Node.js
coffee
Java & Spring Boot
php
PHP Laravel
database
PostgreSQL & SQL
cloud
AWS Cloud
smartphone
Kotlin & Swift
package_2
Docker & CI/CD
brush
Tailwind CSS

How I build

Systems that survive the second run

7 years of production delivery, most recently owning an automation programme end to end — scope, estimate, build, rollout and the support afterwards. These are the six things I bring to that, and the evidence behind each one.

The full background arrow_forward
smart_toy

AI That Ships

LLMs behind a contract, not a demo. Forced tool-calling schemas, confidence gates, retrieval grounded in the customer’s own documents, and a human in front of anything a client sees.

Claude · AWS Bedrock · RAG on OpenSearch

hub

Event-Driven by Default

Webhooks, queues and schedulers instead of cron jobs and hope. Work is decoupled behind SQS with a dead-letter queue, so a downstream outage delays a message rather than losing it.

Lambda · API Gateway · SQS/DLQ · EventBridge

restart_alt

Idempotent Under Retry

At-least-once delivery means every handler will run twice eventually. Provisioning locks, property-keyed upserts and checksum change detection make the second run a no-op.

DynamoDB conditional writes · content hashing

lock

Security by Design

Signature verification on every inbound webhook, least-privilege roles per function, secrets that never reach source control, and tenant data isolated in the query layer rather than the prompt.

HMAC · OAuth · least-privilege IAM · KMS

monitoring

Testing & Observability

Unit and integration suites with in-memory fakes, plus live end-to-end runs against the real third-party APIs. Structured JSON logs you can build a metric filter on, and alerts on the DLQ.

Contract tests · JSON logging · DLQ alerting

swap_horiz

Vendor-Agnostic Cores

Third-party systems live behind an adapter contract, so swapping an ATS, a CRM or a mail provider is a new adapter rather than a rewrite. Proven on a 60+ brand multi-tenant platform.

Adapter pattern · DTO boundaries · Clean Architecture

Writing

45 write-ups across 13 series

Long-form engineering notes on AI automation, AWS architecture, cloud security and the decisions behind them — including a seven-part teardown of a production RAG agent.

Browse all articles arrow_forward

Get in touch

Let's automate
the boring part

If you have a process someone is doing by hand, a pipeline that keeps double-processing under retry, or an LLM feature that needs to be safe enough to put in front of a client — that is the work I want.

Open to senior AI automation and full-stack roles in Sydney
Based in
Sydney, NSW, Australia
Work rights
Full working rights — no sponsorship required
Open to
Contract or permanent · hybrid or remote
Reply time
Within 24 hours, AEST business days