Machine learning development in Melbourne
Hospital operations in Melbourne generate the data for useful predictions every day: appointments missed, beds occupied, theatre lists overrunning, equipment failing. What they rarely have is a model that runs reliably outside a research paper, retrained as patterns change, and placed where the person making the decision will actually see it.
We build models that are useful and explainable: predictions for no-shows or demand trained on your own history, features computed the same way in training and production, monitoring for drift, and outputs placed where a scheduler or a nurse unit manager will see them during an ordinary day. Sometimes a simpler model with clearer reasons is the better trade. On FM360 our repeat-fault clustering went to production only after we could show why items were grouped together.
Melbourne's software market is built on products rather than projects. SEEK, REA Group and MYOB run from the city, Culture Amp started here, and a generation of engineers learned their trade inside marketplaces and SaaS businesses that sell well beyond Australia. The SaaS companies we hear from have usually found their market and are now paying for early decisions: a data model that assumed one customer type, permissions that started as a role column, and infrastructure in a single region when their newest customers are in the US or Europe.
Health and education are the other two pillars. The Melbourne Biomedical Precinct around Parkville brings together hospitals, research institutes, biotech firms and universities, and they need registries, trial platforms, patient apps and operational tools that handle sensitive records carefully and still suit a busy clinician between patients. The universities (Melbourne, Monash, RMIT and the rest) run student systems, learning platforms and research data at a scale that rarely fits off-the-shelf software, and their students judge every portal against the apps on their phones. And the Port of Melbourne keeps a large freight and logistics industry busy, much of it still run on email and spreadsheets.
Hiring costs a little less than in Sydney. Indeed puts the average base salary for a software engineer in Melbourne at A$109,570, from 329 reported salaries, and the engineers who have already scaled a product are the ones every scale-up wants at the same time. A platform problem can sit on the roadmap for quarters while that hire is found. That is where we fit: senior engineers on a defined piece of work 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, and 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 the work stays readable long after the engagement ends.
We are the right fit for a platform problem your product team has no time for, a defined piece of work with a clear end, or the months before your own hires start. Senior engineers arrive within days, the first piece is a fixed-price two weeks, and 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 Melbourne teams.
How do you work with teams in Melbourne?+
We are in Bengaluru, and four hours of every working day overlap with your afternoon, moved to suit your team. Stand-ups, code reviews and design calls happen live in that window, so your mornings stay with your own people. 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.
Do you build for Melbourne SaaS and marketplace companies?+
Yes, and it is the work Melbourne asks for most. We untangle data models that assumed one customer type, turn a role column into proper permissions, add single sign-on and a second region for the first large overseas customer, and tune search and messaging for marketplaces that have outgrown their first version. We work inside your codebase, alongside your product engineers, starting with whatever is slowing them down most.
How does your rate compare to hiring in Melbourne?+
Indeed puts the average base salary for a software engineer in Melbourne at around A$110,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 can start within days of the call. The first piece is a fixed-price two-week engagement at $2,800, so you can judge us on what ships.
Can you work white-label for a Melbourne agency?+
Yes. If your agency wins more build work than your developers can carry, we work under your name. Your client sees your team and your process, we join calls as your engineers, and the code goes into your client's repositories from the first commit. You keep the client relationship. An NDA is signed before you share anything specific, and the runbooks and architecture notes are written as we go.
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.