Custom software is worth building when the process it supports is genuinely specific to your business. When it is not, configuring an existing product is cheaper and we will say so.
What we actually do
Internal systems that encode how your business actually works, rather than forcing the business to work the way a generic tool expects.
Integration between systems that were never designed to talk to each other. This is unglamorous and frequently the highest-value work available, because the cost of manual data movement between systems is usually invisible until someone measures it.
Legacy modernisation, incrementally. Replacing a working system in one release is how modernisation projects fail; strangling it gradually is how they succeed.
Applied AI — language models, classification, extraction, forecasting — attached to a specific, measurable task.
On AI specifically
The useful question is not whether to use AI, it is whether a given task has a tolerance for being wrong sometimes. Summarising, drafting, classifying and extracting all tolerate it, because a human is reviewing the output anyway. Calculating an invoice total does not.
We will map which parts of a workflow fall on which side of that line before proposing anything. An AI feature in the wrong place does not just fail, it creates work by producing plausible output nobody can trust.
Cloud and operations
Software that cannot be deployed reliably is not finished. Infrastructure, CI/CD and observability are part of the build: AWS or Azure, automated deployment, and enough monitoring to know something broke before a customer tells you.