I build the AI agents and automation that small businesses actually run.

I'm Thomas, a Sydney developer with 15+ years of shipping software. I build AI agents, workflow automation and custom web and mobile apps for small and medium businesses across Australia.

TypeScript, Go and Flutter. I work solo, which means you talk to the person who writes the code, not an account manager.

support-triage

A recorded run of a support triage agent: it reads the inbox, classifies each ticket by intent and severity, routes and drafts replies, and escalates the tickets it is not confident about to a human.

$ agentiny run triage --inbox support
→ pulled 14 new tickets
→ classified by intent and severity
→ routed 11 to the right queue
→ drafted a reply for each
! held 3, confidence below threshold
→ escalated the held ones to a human
✓ inbox clear
  • 15+years shipping software
  • 1 weekto a working prototype on your own data
  • 0account managers between you and the code
  • 100%of the code delivered into your repository
What I build

Three kinds of work

Custom AI solutions and software, all of it code I write, test and hand over. If an off-the-shelf tool solves your problem for forty dollars a month, I'll tell you that instead.

AI agents

Agents that read, decide and act inside your systems, not chatbots that answer FAQs. Give one a job that needs judgement, such as processing documents, sorting enquiries, research or monitoring, and it works through the task and escalates whatever it isn't sure about.

  1. read
  2. decide
  3. act or escalate
The shape of any agent run: it reads what came in, decides what the task needs, and either takes the action or escalates to a human. Steps in order: read, then decide, then act or escalate.
AI agent development

Automation

AI automation for Australian businesses: removing the repetitive work between the tools you already use. Quotes, invoices, data entry, reporting, document extraction. These are the jobs someone on your team currently does by re-typing things from one screen into another.

  1. invoice in
  2. extract
  3. to your ledger
How an invoice automation moves data without anyone re-typing it: the invoice arrives, the fields are extracted, and the result is written to your accounting system. Steps in order: invoice in, then extract, then to your ledger.
AI automation services

Custom software

Internal tools, web apps and mobile apps. TypeScript, React, Go and Flutter. Fixed scope, code in your repository, documented and handed over. Built to be owned, not rented back to you.

  1. fixed scope
  2. weekly demos
  3. your repo
How a custom software project runs from scope to handover: a fixed scope up front, weekly demos during the build, and the code delivered into your own repository. Steps in order: fixed scope, then weekly demos, then your repo.
Talk about a build

Not sure which of these you need? AI consulting is the shorter engagement where we work that out first.

A real build

An agent that researches the market and acts on it

One worked example, start to finish, so you can see what “an agent” actually means in practice.

The problem

A small store running on Shopify has the same three questions every week: what should we reorder, what should we stop carrying, and what should we stock next. Only part of the answer is inside the store. The rest is outside it. What competitors have started carrying, what people have started searching for, what is about to be in season, what the weather is doing where the orders come from. Pulling all of that together by hand takes most of a day, every week, so it does not get done, and the decisions end up being made on gut feel and whatever is already in the warehouse.

What it looks at

The agent runs on a schedule and researches from four directions at once. Most of the work is research, and most of the value is in combining sources that normally live in four different browser tabs and never get compared.

The store's own numbers

Order history, catalogue and margins. Not just what sold most, but what is accelerating, what is quietly dying, and what is only selling because it is discounted.

Competitor storefronts

Scraped directly. What they have added since the last run, what they have dropped, how they are pricing against you, and how they describe the products you both carry.

Search and social signal

Google Trends for the direction of demand, plus Reddit and wherever else the conversation about these products actually happens. A shift usually shows up here weeks before it reaches your orders.

Context that moves demand

Season, upcoming events, and the weather where the orders are coming from. Obvious in hindsight, and almost never in the spreadsheet.

  1. store dataorders, catalogue, margins
  2. outside signalcompetitors, trends, season
  3. work out what it meansreal shift or noise
  4. decide what to changestock, price, copy
  5. act or queue ityour rules decide which
The path a scheduled run takes, from the store's own data and outside signal through to a decision and an action. Steps in order: store data, then outside signal, then work out what it means, then decide what to change, then act or queue it.

What it does with all that

It does not hand back a dashboard. It reasons across all four sources and works out which signals actually agree with each other, because a competitor adding a product, a search term climbing and a season starting mean something very different together than any one of them means alone. Then it acts on the conclusion:

  • Pull products that have stopped moving, before they tie up any more capital.
  • Adjust prices where a competitor has moved or demand has clearly shifted.
  • Rewrite product descriptions to match what people are actually searching for.
  • Generate mockups for new product ideas the research says are worth testing.

All of that can run without anyone pressing a button. How much of it actually does is your call: you set what the agent is allowed to change on its own, and what lands in a queue for you to approve first. Most people start with everything queued, then hand over the low-risk changes once they have watched it work for a few weeks.

A different model for each kind of thinking

Not every step needs the same brain, and pretending otherwise is how these things get expensive. Reading a scraped competitor page and pulling the product list out of it is a job for the cheapest, fastest model available, and it happens hundreds of times per run. Judging whether a trend is real or noise, and whether it justifies changing the catalogue, is a job for a frontier model, and it happens a handful of times. Routing each step to the model that suits it is most of what keeps an agent like this affordable to run without making it worse at the decisions that actually matter.

Why this is an agent

A report is a fixed query. You decide the questions up front and it answers the same ones every time. This isn't that. The useful next move depends entirely on what the last step turned up. If a competitor has just dropped a whole category, that is worth digging into. If a search term is climbing, the question becomes who is already serving it and how well. Neither is something you could have written into a dashboard in advance. Deciding what to look at next, and knowing when it has looked at enough, is the part that makes this an agent rather than a scheduled script.

The stack

Shopify Admin APITypeScriptBunClaudeWeb scrapingScheduled runs
How I build agents
Proof

Built, then written up

I publish how these work: the architecture, the code, and the parts that didn't work first time. You can check the reasoning yourself before you ever email me.

Support ticket triage agent

Reads the inbox, classifies each ticket by intent and severity, drafts a reply, and escalates the ones it isn't confident about.

Built in TypeScript on agentiny, my open-source agent framework, calling the Claude API. The write-up walks through the classification step, the routing rules, and the confidence threshold that decides when a human gets involved instead. The full source is on GitHub, so you can run it against your own examples before deciding whether it is worth building for your inbox.

TypeScriptClaude APIagentiny
Read the build

Invoice extraction pipeline

Pulls structured fields out of invoices that all look different, and gets them into the system of record without anyone re-typing.

It uses a reactive agent pattern, so extraction, validation and categorisation trigger each other rather than being wired together by hand in orchestration code. Anything that fails validation is flagged for review instead of being written to the ledger. The same approach works for receipts, contracts and any document with predictable fields and an unpredictable layout.

TypeScriptClaude APIagentiny
Read the build

The Ralph loop

What actually happens when an agent calls itself in a loop: why it works, and the point at which it stops working.

The whole technique fits in one line of bash, which is exactly why it is worth understanding properly before trusting it with anything. I ran it on real tasks and wrote up where it earns its keep, where it burns tokens producing nothing, and how to try it in about thirty minutes without putting a repository at risk. It is the clearest illustration I have of why an agent is a loop rather than a single call.

Agentic AIClaude CodeEvals
Read the build

An SEO agent in TypeScript

Point it at a competitor's blog with a topic in mind and it crawls the site, scores every page for relevance with Claude, and hands back the most relevant ones ranked.

Around 140 lines of TypeScript with one dependency, calling the Claude API directly rather than hiding the work inside a no-code builder. The write-up is the whole build, including the scoring prompt and the crawl limits that keep it from wandering off across the internet. There is a mock mode that runs without an API key, so you can try the thing for nothing first.

TypeScriptClaude APISEO
Read the build
About

Hi, I'm Thomas

Sydney, Australia
Thomas Wiegold

I've been writing software professionally for more than fifteen years, and I've been based in Sydney since 2019.

I started out building Windows Phone apps and games in C# on the Microsoft stack, back when that platform still looked like it had a future. Several of them did genuinely well. That led into Unity and game development, which is where I learned that shipping is mostly the unglamorous part: performance, edge cases, and the last ten percent that takes as long as the first ninety.

From there I moved to the web, and that has been the bulk of the years since. Mostly React and TypeScript, mostly ecommerce, where a slow page or a broken checkout has an immediate and very visible price. Alongside that I built Android apps in Flutter, which is still what I reach for when something needs to run on a phone.

The turn towards AI wasn't a business decision. I got access to OpenAI's GPT while it was still in beta, before ChatGPT existed and before any of this was a category, and I could not stop thinking about what it meant for the businesses I was already building software for. That is what I do now: AI agents and workflow automation for small and medium businesses, built with the same stack and held to the same standards as everything that came before it.

I work solo, deliberately. Projects get scheduled so I never have to subcontract, which means the person you talk to on the first call is the person who writes the code, tests it, and hands it over.

I write about this work as I go, mostly things I have actually built and tested rather than news. If you want to know how I think before you hire me, it's all on the blog.

What I build with

TypeScriptReactReact RouterGoFlutterDartBunNode.jsPostgreSQLDockerClaudeOpenAILocal LLMs

How I work

Fixed scope

A written scope and a price before anything starts. If the work grows, we agree that separately rather than watching an hourly rate run.

Code you own

It lives in your repository, documented, with a proper handover. Nothing is a black box you can only maintain by paying me.

No retainer lock-in

Ongoing support is available if you want it. It is never a condition of getting the work built in the first place.

Direct access

You talk to the person writing the code. There is no account manager in the middle and nothing gets handed to an offshore team.

FAQ

Frequently Asked Questions

Straight answers about agents, automation, and what building this actually involves.

Contact

Start a project

Tell me what you're trying to do and I'll tell you whether it's worth building. If it isn't, I'll tell you what I'd use instead. The first conversation doesn't cost anything.

Send a message

The more concrete you can be about the problem, the more useful my first reply will be.

Project Type

By sending this form you agree we may process your details as described in our Privacy Policy.

Email

If you'd rather not use a form

contact@thomas-wiegold.com

What happens next

  • You get a reply within one business day.
  • We have one conversation about what you're trying to do. Call or email, whichever you prefer.
  • If it's worth building, you get a written scope and a fixed price before anything starts.