Machine learning development in Sydney
Sydney's lenders, insurers and payment companies run models that decide who gets credit, which payment looks like a scam and what a policy costs. Those models are often built once by a data scientist who has since moved on, retrained by hand when someone remembers, and hard to explain when a customer or a manager asks why a decision went the way it did.
We build the machinery around the model: a record of which model version made each decision and on what inputs, features computed the same way in training and production, monitoring that flags drift early, and reasons a customer-facing team can read. Sometimes a simpler model with clearer reasons is the better trade, and we will say so. In scam detection the same care matters twice, because a false positive blocks a real customer's payment.
Sydney is where Australian money keeps its head office. Commonwealth Bank, Westpac and Macquarie run their groups from the city, the large insurers are here, and around them sits a dense fintech sector in payments, lending and wealth. The software these firms need is rarely a brand-new product. It is the work around the core: payment flows that settle in seconds, onboarding and lending journeys customers actually finish, reports that agree with each other, and the internal tools that keep claims and complaints moving.
Real-time payments have raised the bar. On the New Payments Platform money moves in seconds, and PayTo lets a business take agreed payments straight from a customer's account, so a lender or fintech built around overnight batch files now needs instant confirmations and a ledger that never records the same payment twice. Sydney is also where Atlassian and Canva started, so its buyers have been trained by good software built down the road. A clunky internal tool or a slow sign-up flow is noticed here in a way it might not be elsewhere. Beyond finance, the city has a large property and strata sector, online retailers shipping across a very big country, and a startup scene around Tech Central.
Hiring reflects all of that. Indeed puts the average base salary for a software engineer in Sydney at A$119,602, from 526 reported salaries, and experienced engineers are contested by the banks, the big product companies and every well-funded startup at once. A team that needs a payments engineer or an extra pair of senior hands for a quarter can wait a long time for the right hire. That is where we are useful: a defined piece of work, started within days, with the code in your repositories from the first commit.
Our four hours of daily overlap land in your afternoon, and we move them to suit your team. Your morning stays with your own people; the afternoon is when you talk to the engineer writing your code, in stand-ups, reviews and design decisions. Runbooks and architecture notes are written as we go, so whoever joins your team next inherits work they can read.
We are the right fit when you have a defined piece of work and want senior engineers on it within days, or when the Sydney hire you need is months away and the roadmap keeps moving. Start with a fixed-price two-week piece and judge us on the output. Agencies can put the work under their own name.
Four ways this arrives.
Someone got good results on a laptop and nobody can reproduce them. We turn it into a training pipeline with pinned data and versioned artefacts, put a serving endpoint in front of it, and record what it was evaluated on so the next version can be compared.
Hundreds of conditions routing tickets or flagging risky orders, each added after an incident. We measure what the rules get wrong on your labelled history, then test whether a classifier beats them. Sometimes the answer is fewer, better rules, and we say so.
Demand, load or staffing estimates that miss often enough to be ignored. We start with a plain seasonal baseline, backtest against the periods you actually plan around, and add complexity only where it beats that baseline on those periods.
Duplicate records, recurring faults, near-identical products under different names. Embeddings group text by meaning where keyword matching cannot, and we build the screen that lets a person correct a group rather than trust it blindly.
Repeat-fault detection that began as UMAP and HDBSCAN over 33,000 work orders and shipped as nightly incremental clustering on the same embedding model.
Read the write-up →Asked by Sydney teams.
How do you work with teams in Sydney?+
We are in Bengaluru and share four hours of live overlap with you every day, in your afternoon, moved to suit your team. That is when we join stand-ups, review pull requests and take design calls. We work in your tools, whether that is Slack, GitHub or Linear, and the person on every call is the engineer who writes the code. Between calls, progress is in your tracker and your repositories.
Do you build for Sydney banks, insurers and fintechs?+
Yes, and that is most of what Sydney asks us for. We build payment backends that handle NPP and PayTo without recording a payment twice, sign-up and lending journeys customers finish on their phone, complaint and claims tools that take the reading off skilled staff, and data pipelines that make finance and risk reports agree. We work inside your codebase and your cloud, starting with the one flow that matters most.
How does your rate compare to hiring in Sydney?+
Indeed puts the average base salary for a software engineer in Sydney at around A$120,000. Our published rate is $35/hour with a $5,000 minimum, or $5,400 a month for one embedded engineer. There is no recruiting time and no employment overhead, and work starts within days of the call. The first piece is a fixed-price two-week engagement at $2,800, so you judge us on what ships.
Can you take over an app another team built?+
Yes. It is a common starting point for Sydney products whose agency or founding engineers have moved on. We read the code, run it, and write down how it fits together and where the risks sit. The first fixed-price two-week piece is usually one real fix or feature, so you see the handover working while the architecture notes build up. The code stays in your repositories throughout, as it always would.
Do we need machine learning, or is a rules engine enough?+
Often a rules engine is enough, and it is cheaper to run, explain and audit. If the people who make the decision today can write it down, write it down. A model earns its place when the rules keep multiplying, the inputs are messy text or images, or the pattern shifts faster than anyone can edit the rules. We check against your history before recommending either.
Why not just call a hosted model API?+
Sometimes you should. With low volume, messy language and no labelled data, a hosted model and a good prompt ship quickly. A trained model wins when per-call pricing starts to hurt at your volume, when latency matters, when data cannot leave your systems, or when you have labelled examples a small model can learn from. We price both paths before you commit.
How much data do we need?+
For classification, usually fewer labelled examples than people fear, and embeddings can group text with no labels at all. Forecasting is the opposite: you need enough history to cover the cycles you plan around, and a single year says little about a yearly pattern. We give you an answer after looking at your data, not before.
What happens when the model gets worse?+
It will, because the world it learned from changes. We log inputs and predictions, compare them with outcomes as they arrive, and alert when accuracy or the input mix drifts past a threshold you agreed. Retraining is a scripted pipeline with an evaluation gate, so a new model replaces the old one only when it does better on the same test set.
Can you build a recommendation system?+
Yes, and we would start without a learned model. Co-occurrence and embedding similarity, served from Postgres or a vector index, beat a most-popular list for most catalogues and are easy to debug. A learned ranker comes after that, once you have enough interaction data to train and evaluate one. A learned ranker is something we build from our work with embeddings and clustering, starting from a simple baseline you can measure it against.