Open to remote roles in Canada and the US

Austin An

Forward-Deployed / Solutions EngineerDiscovery · POCs · Integrations

I build customer integrations, proofs of concept, AI deployments, MVPs in weeks, delivery playbooks and API integrations that hold up in production.

I've spent years on the customer side of engineering: running discovery with non-technical owners, scoping fixed-bid MVPs, leading API integrations for 60+ advertisers at TikTok, and deploying AI into real workflows.

Richmond, BC · Vancouver area· github.com/foxtails225

Availability
Now, no notice period
Work setup
Remote, Pacific time
Experience
11 years, 4+ in production AI
Open to
Senior full-time roles and contract builds

Where I've worked

  • CloudSpot
  • JDCommerce
  • TikTok
  • Unbounce

In a hurry? Pick who you are.

Here to fill a role?

  • Senior software engineer, 11 years, 4+ of them shipping AI and ML to production.
  • Remote from Vancouver (Pacific time), open to roles in Canada and the US.
  • Available now. No notice period.
  • Send the page that matches the req: /fullstack/, /ai/, /platform/ or /fde/. Each one leads with the right projects.

What I do

Most of my work sits where product, data and infrastructure meet.

Selected work

Production systems: the problem behind each one, how it works, and what changed after it shipped.

  1. Discovery
  2. Fixed-bid scope
  3. Build
  4. Production

JDCommerce2021–2022

Five client MVPs, 6–10 weeks each

Problem
Small businesses in coaching, video, marketplaces and teleradiology needed working products fast, on a fixed budget.
What I built
I worked forward-deployed with each owner: ran discovery, scoped fixed-bid MVPs and shipped them to production with React, Next.js, Node.js, Django and AWS, then turned the repeat work into a delivery playbook.
  • 5 MVPs in production
  • ~$140K phase-two work
  • 1–2 weeks saved per build
  • React
  • Next.js
  • Node.js
  • Django
  • AWS
  1. Advertiser server
  2. Events API kit
  3. TikTok Ads
  4. Attribution

TikTok2021

Server-side Events API kit

Problem
When iOS 14.5 tracking rules landed, advertisers' browser pixels started missing conversions and budgets were at risk.
What I built
A reusable server-side Events API kit in Python and Node.js that advertisers could drop next to their existing Pixel, plus hands-on integration help.
  • Used by 40 advertisers
  • ~20% more attributed conversions
  • ~$1.5M CAD kept running
  • Python
  • Node.js
  • Events API
  • Pixel
  1. New study
  2. Triage model
  3. Worklist priority
  4. Radiologist reads

JDCommerce2022

X-ray triage in a radiology worklist

Problem
Urgent X-rays waited in the same queue as routine ones.
What I built
I deployed a vendor's FDA-cleared triage model (PyTorch, FastAPI, Docker) into the client's teleradiology worklist in their HIPAA-eligible AWS account. Flagged studies jump the queue, and radiologists still read every case.
  • −35% time-to-read on urgent studies
  • PyTorch
  • FastAPI
  • Docker
  • AWS
  • HIPAA
  1. Old CRM export
  2. LLM field mapping
  3. Review flagged fields
  4. Ready in Studio

CloudSpot2024–2026

LLM import assistant

Problem
Photographers switching from another CRM spent about 3 hours setting up, and many gave up in week one.
What I built
An LLM-powered assistant that maps client lists and templates into Studio and flags uncertain fields for a human to check.
  • Setup 3 h → 25 min
  • Week-one activation 34% → 55%
  • LLMs
  • Structured outputs
  • Data migration
  1. Lead captured
  2. Webhook + retries
  3. Field mapping
  4. CRM

Unbounce2015–2016

CRM integrations that don't drop leads

Problem
About 1.5% of landing-page leads never made it into customers' CRMs.
What I built
I hardened the Salesforce, HubSpot and Zapier integrations with webhook retries, field mapping and alerts.
  • Failed deliveries 1.5% → <0.1%
  • −30% related tickets
  • Webhooks
  • Salesforce
  • HubSpot
  • Node.js
  1. Upload, booking or Stripe event
  2. Temporal workflow
  3. LangGraph agent
  4. MCP tools
  5. Human approval

CloudSpot2024–2026

Agentic workflow platform

Problem
Photographers were losing hours to admin around every upload, booking and payment.
What I built
An event-driven platform in async Python and TypeScript: Temporal workflows, LangGraph agents and sub-agents calling Pydantic-validated tools on MCP servers, and human approval with audit logs.
  • ~400K tasks a month
  • 99.9% completion
  • Python
  • TypeScript
  • Temporal
  • LangGraph
  • MCP
  1. Golden dataset
  2. LLM-as-judge
  3. CI regression gate
  4. Router: Claude / OpenAI

CloudSpot2024–2026

LLM evals and cost-aware routing

Problem
LLM features had to ship without quality regressions or runaway model bills.
What I built
Success metrics and eval harnesses before every launch (golden datasets, LLM-as-judge rubrics, Langfuse tracing, CI regression gates), plus routing across Claude and OpenAI with retries, fallback, token budgets and prompt caching.
  • −46% cost per task
  • ~2¢ per task
  • Evals
  • Langfuse
  • Claude
  • OpenAI
  • CI/CD
  1. Invoice sent
  2. Stripe Connect
  3. Idempotent webhooks
  4. Photographer paid

CloudSpot2022–2024

Embedded payments on Stripe Connect

Problem
Photographers invoiced in one tool and got paid in another, and the platform earned nothing on it.
What I built
Payments in Go and TypeScript on Stripe Connect with KYC, card and ACH, idempotent retry-safe webhooks, and a guided in-app onboarding flow for identity, bank setup and the first invoice.
  • ~$16M a year by month six
  • Zero double charges
  • Onboarding 54% → 79%
  • Go
  • TypeScript
  • Stripe Connect
  • PostgreSQL
  1. Customer question
  2. Hybrid search
  3. LLM + guardrails
  4. Answer or hand off

CloudSpot2024–2026

Streaming RAG support agent

Problem
Support volume was growing faster than the team, and three new hires were planned.
What I built
In-app chat over server-sent events with hybrid pgvector search across help docs and 50K resolved tickets, guardrails, and a confidence-based handoff to a human.
  • ~40% of tier-1 chats resolved
  • CSAT unchanged
  • ~$180K/yr in hires avoided
  • RAG
  • pgvector
  • SSE
  • Guardrails
  1. Contract
  2. E-signature
  3. Questionnaire
  4. Client portal

CloudSpot2023

Studio client workflows

Problem
Photographers juggled separate tools for contracts, questionnaires and their client portal.
What I built
I owned the e-signature, questionnaire and client-portal features of the August 2023 Studio launch in Vue.js, TypeScript, Go and PostgreSQL.
  • 24% of paying users adopted it in 6 months
  • 17% lower churn for Studio users
  • Vue.js
  • TypeScript
  • Go
  • PostgreSQL
  1. New booking
  2. Agent plans
  3. Parallel API calls
  4. Photographer approves

CloudSpot2024–2026

AI booking assistant

Problem
Every new booking meant about 40 minutes of contracts, questionnaires and invoices.
What I built
A tool-calling agent that hits the contract, questionnaire and invoicing APIs in parallel and drafts the paperwork for the photographer to approve.
  • 40 → 8 min per booking
  • +26% invoice payments
  • Tool calling
  • Human-in-the-loop
  • TypeScript
  1. New gallery
  2. Embeddings + scoring
  3. Cluster duplicates
  4. Highlights

CloudSpot2024–2026

AI Highlights for photo galleries

Problem
Clients scroll past the best shots in galleries of hundreds of photos.
What I built
Image embeddings, aesthetic scoring and near-duplicate clustering over about 6M photos a month, picking highlights and grouping similar shots on every new gallery.
  • On for ~80% of galleries
  • +12% print orders (A/B)
  • Computer vision
  • Embeddings
  • A/B testing
  1. PostHog + Stripe
  2. SQL scoring
  3. Clay enrichment
  4. HubSpot routing

CloudSpot2024–2026

Product-led growth engine

Problem
Sales couldn't tell which free users were about to buy.
What I built
SQL models score PostHog usage and Stripe signals as product-qualified leads, enriched in Clay and synced by reverse ETL into HubSpot lifecycle stages and routing.
  • +19% free-to-paid vs. holdout
  • ~$500K new ARR in year one
  • SQL
  • PostHog
  • Reverse ETL
  • HubSpot
  1. Account metrics
  2. Anomaly model
  3. SHAP reasons
  4. Alert

TikTok2021

Ad-tracking anomaly monitor

Problem
Broken tracking usually surfaced days later, when a client noticed their numbers had dropped.
What I built
An anomaly-detection and data-quality monitor (Python, scikit-learn, SHAP) across managed accounts that flags drops in spend or conversions with plain-English reasons.
  • 3 days → 4 h to detect
  • 30+ breaks caught before clients
  • Python
  • scikit-learn
  • SHAP
  1. Visitor
  2. Feature pipeline
  3. ML router
  4. Best variant

Unbounce2018–2020

Smart Traffic personalization

Problem
A/B tests pick one winning page for everyone, even when different visitors convert on different pages.
What I built
Real-time ML routing that sends each visitor to the landing-page variant most likely to convert, and the event and feature pipelines on AWS Lambda and DynamoDB behind it.
  • +20–30% conversions vs. A/B
  • Patent-pending
  • Python
  • ML
  • AWS Lambda
  • DynamoDB

How I work

I do best on messy, cross-functional problems where nobody has written the spec yet.

  1. Find the real problem

    I talk to the people doing the work before I write code. Half the time the fix is a workflow change, not new tech.

  2. Ship the simplest fix

    The boring solution usually wins. When AI is the right call, I start small, keep a human in the loop and add autonomy once the evals say it's safe.

  3. Measure what changed

    Every launch gets a baseline and a success metric first: holdouts, A/B tests, golden datasets. If a number didn't move, I say so.

Experience

CloudSpot4 yrs
JDCommerce7 mo
TikTok1 yr
Unbounce6 yrs
  1. CloudSpot

    B2B SaaS platform for photographers

    Remote

    Senior AI EngineerMar 2024 – Jul 2026

    • Architected the agentic workflow platform (Temporal, LangGraph, MCP tools, human approval): about 400K tasks a month at 99.9% completion.
    • Built eval harnesses before every LLM launch and cost-aware routing that cut cost per task 46%.
    • Shipped a streaming RAG support agent, an AI booking assistant and an LLM import assistant that took setup for switchers from 3 hours to 25 minutes.
    • Owned the product-led growth engine end to end: +19% free-to-paid against a holdout, about $500K new ARR.

    Senior Full-Stack EngineerApr 2022 – Feb 2024

    • Built embedded payments on Stripe Connect in Go and TypeScript, about $16M a year in volume by month six.
    • Owned e-signatures, questionnaires and the client portal for the Studio launch (Vue.js, Go, PostgreSQL).
    • Rebuilt subscription billing on Stripe Billing: involuntary churn down 22%, about $200K a year kept.
  2. JDCommerce

    Software consulting for small businesses

    Remote · Contract

    Senior Software Engineer, Client SolutionsSep 2021 – Mar 2022

    • Worked forward-deployed with 5 clients: ran discovery, scoped fixed-bid MVPs and shipped each in 6–10 weeks.
    • Deployed an FDA-cleared X-ray triage model into a teleradiology worklist on HIPAA-eligible AWS.
    • Turned the repeat work into a delivery playbook (Okta SSO, Stripe, TaxJar, CI/CD) used on the next 4 builds.
  3. TikTok

    TikTok For Business, Global Business Solutions

    Toronto, ON

    Solutions Engineer, AdsAug 2020 – Aug 2021

    • Technical lead for 60+ Canadian advertisers and agencies in TikTok For Business's first year in Canada.
    • Ran 24 pre-sales measurement POCs with account managers; 15 moved to always-on budgets.
    • Built a server-side Events API kit and an anomaly monitor that cut time to spot broken tracking from 3 days to 4 hours.
  4. Unbounce

    Landing page and conversion platform

    Vancouver, BC

    Software Engineer, Machine LearningJan 2018 – Jul 2020

    • Core engineer on Smart Traffic, real-time ML personalization that beat A/B testing by 20–30% on conversions.
    • Built a lead-scoring model synced to Salesforce; top-scored trials converted at 3x the average.

    Software Engineer I–II, GrowthFeb 2015 – Dec 2017

    • Built lead capture and scoring for the Landing Page Analyzer (#2 on Product Hunt, 8,000+ users in its first weeks).
    • Shipped 25+ onboarding experiments and hardened the CRM integrations behind every landing-page lead.

Toolbox

I pick the stack to fit the problem, not the other way round. A sample of what I've worked with:

  • Python
  • TypeScript
  • JavaScript
  • Go
  • Node.js
  • SQL
  • Java
  • C#
  • .NET
  • React
  • Next.js
  • Vue.js
  • Angular
  • Tailwind
  • FastAPI
  • Django
  • Flask
  • NestJS
  • Express
  • GraphQL
  • REST
  • WebSockets
  • SSE
  • Electron
  • PostgreSQL
  • pgvector
  • MySQL
  • MongoDB
  • Redis
  • DynamoDB
  • Kafka
  • AWS SQS
  • AWS Lambda
  • ECS
  • S3
  • GCP
  • Azure
  • Docker
  • Kubernetes
  • Terraform
  • GitHub Actions
  • GitLab CI
  • Jenkins
  • Datadog
  • Grafana
  • Sentry
  • OpenTelemetry
  • Linux
  • Claude
  • OpenAI
  • AWS Bedrock
  • LangGraph
  • LangChain
  • MCP
  • Temporal
  • Pydantic
  • Langfuse
  • LangSmith
  • RAG
  • Embeddings
  • PyTorch
  • scikit-learn
  • SHAP
  • Stripe
  • Twilio
  • Okta
  • HubSpot
  • Salesforce
  • PostHog
  • Segment
  • Clay
  • n8n

Education

B.Sc. Computer Science, University of British Columbia 2010 – 2014

Let's build something useful.

I'm looking for a senior role where I can own work end to end, from the first conversation with users to the dashboard that shows whether it worked. Send me a note, or see how I work on GitHub.

I'm a

↑↓ move · ↵ select