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.

  • Distributed, event-driven pipeline in TypeScript on the Serverless Framework — five Lambda functions behind API Gateway, SQS with a dead-letter queue, DynamoDB and EventBridge — ingesting Lever webhooks and mirroring every candidate into Google Drive and Google Sheets.
  • 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 that does the CV parsing, image downloads and Drive writes.
  • A Claude assessment step drafts the scorecard against a purpose-built JSON schema; a render Lambda turns the approved draft into a branded A4 PDF with Handlebars and Puppeteer and posts it to Slack. Gemini matches interview transcripts back to the right candidate.
  • Every write is idempotent under at-least-once delivery: DynamoDB provisioning locks, Google Drive appProperties as the file identity rather than the file name, and checksum change detection. EventBridge sweeps retry a failed transcript match or PDF render; the DLQ holds anything still failing for 14 days.
  • The core stays ATS-agnostic behind an adapter contract, covered by 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.
TypeScript AWS Lambda SQS + DLQ DynamoDB EventBridge Claude API Google Gemini Lever ATS Serverless Framework
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
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
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