Director of Technical Delivery & AI Engineer

Engineering lead.AI engineer.Both in production.

I'm Ben, Director of Technical Delivery at Funraisin, where I lead fifteen engineers on a platform used by about a thousand charities. I also built ZOSA, an AI product live on iOS, Android and web, on my own.

Experience
10+ years
Based
Australia · Remote
Timezone
AEST · UTC+10
Status

I started out teaching skiing in Japan.

In 2020 I joined Funraisin as a graduate developer.

Today I run technical delivery for its largest region.

Alongside that, I built and run ZOSA, a multi-system AI product.

02Background

I lead engineering teams and build production AI. Each makes me better at the other.

At Funraisin I'm Director of Technical Delivery for Australia, the largest region. My fifteen engineers, in-region and offshore, build the custom work charities need on top of the platform, usually against fixed campaign dates.

I joined in 2020 as a graduate on a legacy codebase with 275 routes. Four promotions and a move to Australia later, I'm still on that codebase, and I wrote the AI standards the team uses on it.

ZOSA is three and a half years and 819 commits of my own work. I started it for a personal reason.

“Suicide has taken people I knew, and people closest to my friends. Each time, nobody around them knew how bad it had got.”
Why ZOSA exists
Receipts

Funraisin, ZOSA, and the career behind both

Funraisin
0+
Engineers led
In-region and offshore
Funraisin
0
Promotions in six years
Graduate to Director
Career
0+
Years in technology
Including uni and freelance
ZOSA
0
Commits, built alone
Solo, across two repositories
ZOSA
0
Distinct development days
About one day in three
ZOSA
0
API endpoints shipped
Async FastAPI, from scratch
SystemNominal
Render pipeline
STATIC
WebGL context
ACTIVE
Device tier
HIGH
Pixel ratio cap
2.00×
Pointer
FINE
Reduced motion
OFF
Story progress0%
03Principles
  1. 01Judgement

    Write down why, not just what.

    Otherwise the next engineer repeats the mistake or deletes the fix.

  2. 02Product thinking

    Let them feel it before you ask for anything.

    ZOSA's free users get full memory for three sessions. The paid plan sells itself.

  3. 03Security

    Enforce it where it can't be bypassed.

    Client-side limits are UX. Server-side limits are security.

  4. 04Cost discipline

    Ask the cheap question first.

    If plain Python can answer it in a millisecond, the model never sees it.

  5. 05Standards

    Generated code is a draft, never a deploy.

    Rule one of my team's AI standards. The danger isn't rubbish code. It's plausible code.

  6. 06Systems thinking

    Automate what should never have been manual.

    The hours saved aren't the point. Where the team's attention goes next is.

04Leadership

Engineering ishalf the job.

The other half is a team that can decide without me, against dates that won't move.

Idea to live
  1. Idea

    A charity wants something new.

  2. Discovery

    Bespoke or core? What will it cost?

  3. Architecture

    I make the call before the build.

  4. Build

    In-region and offshore.

  5. Review

    PASS or FAIL on anything AI touched.

  6. Delivery

    Around live campaigns. No quiet hour.

  7. Iteration

    Plain-English reports. Lessons kept.

Written to be acted on

Nothing counts until someone else can act on it.

One decision, six audiences, six ways of writing it.

  1. 01

    Offshore engineers

    Specs you can read in a second language, with nobody to ask.

    Work starts the morning it lands.

  2. 02

    Project managers

    Honest estimates, with the risky parts first.

    They can hold the date.

  3. 03

    Charity clients

    What happened, what it means, what happens next.

    They can explain it upward.

  4. 04

    Client engineers

    Technical calls and integration work, engineer to engineer.

    Problems get solved in the call, not three emails later.

  5. 05

    Leadership

    Effort against revenue, trade-offs out loud.

    Meetings end in decisions.

  6. 06

    The model

    What exists, real payloads, and hard rules.

    It never asks a follow-up, so the spec can't need one.

The other half

Confidence to decide

Give them the context, then back their call.

Mentoring & careers

Ask where they want to go, and shape the work to fit.

Psychological safety

My first question is always: what isn't working?

Technical strategy

Standards and tooling for our biggest region.

Escalations

Incidents land with me, including mid-campaign.

Production access

Prod database and SSH. Few people hold it.

05Stack

Six domains, one system.

Legacy PHP at Funraisin, modern Python on ZOSA, and AWS AI services at both. Select a domain for detail.

COREFRONTENDBACKENDAIDATAPLATFORM
Domain

Core

Legacy PHP at Funraisin, modern Python on ZOSA. I own the architecture on both.

Technologies
  • PHP 7.4 / 8.x
  • Python 3.12
  • TypeScript
  • SQL
All domains
06Selected work

Five problems,none of them obvious.

One product I built alone, and four from Funraisin. Each looked like one kind of problem and turned out to be another.

Platform clients

Major clients from the AU, UK and US regions.

UNICEF
WWF
Greenpeace
Cancer Research UK
Mental Health UK
Alzheimer's Association
Race for the Kids
STEPtember
The Push-Up Challenge
Cancer Council
Camp Quality
01/ 052023 - present
The ZOSA web app: an onboarding screen offering encrypted, private mental health conversation.
The ZOSA iOS app home screen, showing conversation entry points and a daily check-in.

ZOSA

An AI companion on iOS, Android and web. Designed, built and shipped by me alone.

Six AI providers behind one interface, long-term memory, realtime voice, and client-side encryption the server can't read.

Role
Architect, sole engineer, product owner
Scale
120 endpoints, 6 providers, 3 platforms
Impact
Live, with thousands of conversations and paying subscribers
  • Python 3.12
  • FastAPI
  • LLM orchestration
  • Vector retrieval
  • WebRTC realtime
  • React Native
  • Firestore
  • AES-256-GCM
The mechanism

Symptoms feed each other. ZOSA finds the one holding the loop together.

InsomniaThe dominoFatigueMistakesGuiltLow moodWorry
02/ 052025 - 2026

AI Ways of Working

The team was using AI. None of it knew our codebase.

Four regions, four different assistants, all writing textbook code for a platform that isn't textbook.

Role
Author and owner
Scale
15 engineers, 4 regions
Impact
Quality stopped depending on who picked up the ticket
  • Claude Code
  • Subagents
  • Context engineering
  • Review workflows
The mechanism

A person signs off the spec first. A FAIL goes back with its reasons.

QuestionBuildReviewPassFailReworkA person signs off
03/ 052026

Attack Response

An automated attack on a live national campaign, through the same forms real supporters were using.

About 84,000 fraud attempts, plus fake sign-ups and password stuffing. It had to stop without stopping the donations.

Role
Incident lead
Scale
4 national platforms
Impact
Attack surface permanently smaller
  • WAF
  • Log analysis
  • Attack surface reduction
  • Staged rollout
The mechanism

Blocked at the edge. Supporters kept giving.

FirewallPlatformOne sourceSupporters
04/ 052026

STEPtember Points Engine

A new reward is a database row. No developer, no release.

A points and prizes engine for a fitness campaign, with twenty-five reward rules the client changes themselves, mid-campaign.

Role
Architect and engineer
Scale
25 reward rules, ~2,600 lines
Impact
New rewards ship without a deploy
  • PHP
  • MySQL
  • CodeIgniter
  • Webhooks
  • Idempotency
The mechanism

The same event arrives three times. It awards once.

WebhookEventRetryRetryAward enginededupes every eventOne log rowAlready awarded
05/ 052026

Payment Forensics

Four people paid for raffle tickets. Nobody knew who they were.

The payments cleared but the customer details were blank. Three unrelated causes, none visible in the application code.

Role
Investigation lead
Scale
3 causes, 1 symptom
Impact
All three found and explained. None were Stripe.
  • Stripe
  • Apple Pay
  • Log forensics
  • iOS WKWebView
The mechanism

Three causes. One blank record.

In-app browser autofillApple Pay sheetStripe Link, then refreshSale recordPaidNameEmail
07AI engineering

The model isthe easy part.

Calling a model takes an afternoon. The work is everything around it: memory, cost, safety, and what happens when the model is wrong. All of this is running in production.

Built in productionZOSA

Pick one. Each of these is running in production right now.

4 capabilities · one production system

AI at FunraisinFunraisin
BuiltAlzheimer's Association

Conversational registration

A chat assistant for a teen fundraising event that fills in the real registration form, one question at a time.

  • A state machine on Bedrock AgentCore runs the flow. The model is called once, to draft the participant's fundraising story.
  • Passwords never go through the bot. Sensitive fields are the real form controls, moved into the chat.
  • Each turn is logged for cost and drop-off. Message content is never stored, as the users are minors.
  • 22 test files, including browser tests against the live pages and a check that Bedrock actually ran.
  • Bedrock AgentCore
  • AWS Lambda
  • PHP
  • jsdom
  • Usage logging
Worked onFunraisin, internal

Support bot hallucinations

Ask Fran is our Slack support bot on Bedrock. I didn't build it. I traced its 26 open hallucination reports back to the code.

  • Retrieval always returned 15 chunks with no minimum score, the same bug ZOSA once had.
  • Citations were built from all 15 chunks, so answers linked to unrelated articles.
  • Nothing restricted answers to retrieved content, so gaps were filled from the model's general knowledge.
  • Proposed fix: rerank with a score floor, cite only used sources, and say when something isn't documented.
  • Bedrock Knowledge Bases
  • AgentCore
  • MCP tools
  • Slack
  • RAG
Retrieval, illustratedZOSA

Nearest-neighbour search always returns something.

Ask for the five closest memories and you get five, even when none are relevant. ZOSA was passing that noise to the model. The fix is a floor: below 0.35 similarity, a memory stays out, even if that means returning nothing. I later found the same issue in Ask Fran.

Returned
5
Relevant
5

Five relevant memories. No problem here.

An illustration of the mechanism, not real user data.

What I bring

What I bring to a team: people who grow, products that ship, and AI that holds up in production.

Leading engineers

Fifteen engineers across in-region and offshore teams, trusted to make their own calls.

Funraisin
Growing people

Career conversations that shape the work, and four promotions of my own to know what it takes.

Funraisin
Delivering to fixed dates

Live campaigns with no quiet hour, with the risky parts scheduled first.

Funraisin
Building products end to end

ZOSA, from idea to App Store: design, engineering, payments and positioning.

ZOSA
AI in production

Retrieval, model routing, agents and safety checks, live with paying users.

ZOSA
Bringing AI into a team

One tool, one context pack and a PASS or FAIL review, across four regions.

Funraisin
Calm in an incident

An attack mid-campaign, and three payment bugs hiding behind one symptom.

Funraisin
Working with clients

Technical calls and hands-on work with client engineering teams, alongside the PMs who own the relationship.

Funraisin
Clear communication

The same decision written for engineers, project managers, clients and leadership.

Funraisin
Security by default

Server-side checks, on-device encryption, and nothing sensitive in the logs.

Both
Lots of smiles

Serious about the work, not about myself. Hard problems go better when the team is enjoying them.

Always
08Experience

Six years,four promotions,one codebase.

Graduate to Director at one company, across two countries. ZOSA has run alongside it since 2023.

Employed - FunraisinFounder - ZOSABefore Funraisin2020 - present
  1. July 2023 - PresentParallel

    Founder & Sole Engineer

    ZOSA · Australia · remote

    An AI mental health companion on iOS, Android and web, built alongside a full-time job. Product, architecture, engineering, payments and positioning, all mine.

    • Shipped through App Store and Google Play review
    • Two realtime voice pipelines behind one interface
    • Migrated live conversations to AES-256-GCM encryption
    Team
    1
    Outcome
    Live on three platforms with paying subscribers.
    Worth talking about
    A symptom graph from a 2017 psychiatry paper, using betweenness centrality to find the symptom holding the others in place.
    • Python
    • FastAPI
    • React Native
    • React
    • Firestore
    • WebRTC
  2. Sept 2025 - Present

    Director of Technical Delivery (AU)

    Funraisin · Australia

    I lead project delivery for Australia, roughly 80% of the business: fifteen engineers, architecture sign-off on high-risk builds, scoping, escalations and standards.

    • Lead fifteen engineers across in-region and offshore teams
    • Wrote the AI standards and review workflow used across four regions, and ran the workshops in Indonesia
    • Built an AI registration assistant for the Alzheimer's Association on Bedrock AgentCore
    • Led the response to an automated attack on a live national campaign
    • Join technical calls and work directly with client engineering teams on integrations, escalations and incidents
    Team
    15+
    Outcome
    Output quality no longer depends on which developer picks up the work.
    Worth talking about
    Turning AI from individual experiments into a team capability with standards and review.
    • PHP
    • MySQL
    • CodeIgniter
    • Claude Code
    • Bitbucket
  3. Jan 2025 - Sept 2025

    Team Lead

    Funraisin · Australia

    My first people-leadership role. Owning what a team ships turned out to be a different job from owning code.

    • Set up code review and technical standards across in-region and offshore teams
    • Mentoring and career development
    Team
    10
    Outcome
    Promoted to Director after eight months.
    Worth talking about
    Getting one set of standards to hold across in-region and offshore teams.
    • PHP
    • MySQL
    • JavaScript
  4. Late 2023 - Jan 2025

    Senior Developer

    Funraisin · Australia

    Architecture ownership of the hard parts: donations and payments, the fundraiser data model, and raffles at scale.

    • Payments across Stripe Elements, digital wallets and multi-account routing
    • Raffle platforms for Camp Quality, tested against 50,000-entrant loads
    • Multi-state campaign work for Cancer Council
    Outcome
    Promoted to Team Lead in January 2025.
    Worth talking about
    Campaigns where one page has to resolve to the right state entity, charity and payment account.
    • PHP
    • MySQL
    • Stripe
    • jQuery
    • Memcached
  5. Oct 2022 - Late 2023

    Developer - AU region

    Funraisin · Australia

    Moved to Australia and joined a new team. New market, new clients, new compliance rules, same codebase.

    • Custom campaign builds, integrations and admin modules
    • Data analysis across the Australian client base
    Worth talking about
    Rebuilding context in a new market on a codebase I already knew.
    • PHP
    • MySQL
    • JavaScript
    • Bootstrap
  6. Sept 2020 - Oct 2022

    Junior Developer - UK region

    Funraisin · United Kingdom

    My first role in a team, mostly spent learning a large legacy platform from the inside.

    • Learned a platform of ~50 admin modules and 275 routes
    • UK client delivery, including Gift Aid tax reclaim flows
    Worth talking about
    Gift Aid flows, where HMRC defines correct behaviour, not us.
    • PHP
    • MySQL
    • jQuery
    • HTML
    • CSS
  7. Early 2020 - Sept 2020

    Freelance Web Developer

    Independent · United Kingdom · remote

    Six months building sites for small businesses, working directly with owners.

    • A UK commercial vehicle business with real operational traffic
    • A bilingual English and Chinese site for a clinic in Hong Kong
    Team
    1
    Worth talking about
    Building a site in a language I couldn't read, which meant designing around what I couldn't check.
    • PHP
    • JavaScript
    • HTML
    • CSS
    • WordPress
  8. Late 2019 - Early 2020

    Ski Instructor

    Ski school · Japan

    A season teaching skiing, mostly to nervous beginners. The least technical job here, and good training for explaining things clearly.

      Waypoints
      1. 2019BSc from Bristol, then a ski season in Japan
      2. 2020Freelance web development
      3. 2020Joined Funraisin as a graduate developer
      4. 2022Moved to Australia
      5. 2023Senior Developer. Started ZOSA
      6. 2024Everest base camp
      7. 2025Team Lead in January
      8. 2025Director of Technical Delivery in September
      9. 2026AI standards across four regions. ZOSA live on three platforms
      09Contact

      Let's talk.

      Six years ago I was a graduate developer who had never led anyone. The job since has been the same: find the real problem, and explain it so someone can act on it.

      What I'm looking for: AI at the centre of it, and a team worth building. The title matters less than the problem.

      If you're hiring for something like that, or want to talk through an AI or delivery problem, get in touch. It comes straight to me.

      Or reach me on LinkedIn, whichever is easier.