Services
AI agents and workflow automation. RAG and knowledge assistants over private documents. Private and on-premise LLM deployment. AI product development. Web and mobile applications. Cloud, DevOps and infrastructure. Generative media systems. Technical audits.
Ten services, one team
An AI system is rarely the whole job. Something has to hold it: an application, a database, a deployment, a way to tell when it breaks at two in the morning. That surrounding work is usually where a project stalls, because the specialist hands it back and the client goes looking for a second vendor.
AI is what we lead with, and it isn’t a condition. Some of what we build has no model in it anywhere. Either way the work is the same shape, and splitting a project across two teams costs more than it saves.
Web, mobile, cloud and infrastructure are on this list for that reason. They’re not a second business. They’re what ships around everything above them, and they’re why a client can hand over a whole thing rather than a component.
If a hosted API or an off-the-shelf tool is the right answer, we’ll say so. We’d rather lose a project than build something expensive that a subscription would have handled.
AI Agents & Automation
Agents that do, not just answer.
Agents with tools and permission to use them, built into the systems you already run.
RAG & Knowledge Assistants
Answers you can trace to a source.
Assistants that answer from your documents and cite the passage they used.
Private & On-Premise AI
Your data never leaves the building.
Open-weight models running on hardware you control, sized to the memory you actually have and served through llama.cpp.
AI Product Development
AI products that survive real users.
The whole product, where AI is the core rather than a feature added to something that already worked.
Generative Media Systems
Image, video, music, voice.
Generation built as production infrastructure rather than as a demo.
Web Application Development
Software built to be maintained.
We pick the stack from the problem rather than from habit, across JavaScript and TypeScript, Python, .NET, Node and Rust, with relational or document databases depending on what the data actually looks like. What decides whether it works is real authentication, roles that match how the organisation is actually structured, and an audit trail for when someone needs to know who changed what.
Mobile Application Development
Native or cross-platform, whichever fits.
Some software has to be in a pocket. Native or cross-platform is a decision that comes from the product, not from a house preference, and we build either way. The engineering that matters here is rarely the interface: it’s what happens on a bad connection, how a long-running job behaves when the app is backgrounded, and getting through store review without surprises.
Cloud, DevOps & Infrastructure
Deployed, watched, and backed up.
Software that isn’t deployed properly isn’t finished. We handle the whole path from a repository to something running: containers, CI, environments, reverse proxying, databases and object storage, on whatever infrastructure fits the project and the budget. AI systems add their own requirements on top, because inference is slow and spiky and a job that fails halfway needs retrying without charging the user twice. Monitoring separates the application being down from the model being slow, since those need different people woken up. Backups run nightly and get tested by restoring them.
AI Consulting & Technical Audits
A second opinion before you commit.
Sometimes the useful thing is a few days of work rather than a few months. An audit is scoped to a fixed set of questions agreed in advance. Output is a written document with the reasoning shown, not a scorecard. We do not use audits as a route into a build.
Maintenance & Support Retainers
Still here after launch.
Nothing stays working on its own, and models get deprecated on a vendor’s timetable rather than yours. A retainer is a fixed block of time each month, agreed in advance, covering monitoring and incident response, dependency and model updates, small changes and improvements, and a regular review of cost and performance against what it was at launch. What’s in scope is written down at the start, because "support" means different things to different people and finding that out during an incident is expensive.