What we do.
We build software and help teams investigate technical problems, improve existing systems and plan development. Our work includes AI, web and mobile applications, payments and the infrastructure behind them. We also teach complex subjects through tailored courses and visual explanations.

- Plan it
- Build it
- Check it
AI agents & interfaces
What can an agent do, and how do people stay involved?
Harnesses & frameworks
We build custom agent architectures, harnesses and bots for your team’s workflows, including automation and evaluation.
Tools & data
MCP servers and API integrations connect models to the tools and data they need.
Dashboards & review
We also build dashboards where people can assign work, inspect a run, review decisions or take over a task.
Machine learning
Models trained and evaluated on your data.
We prepare data and train models for sound, movement and other signals. We compare approaches and examine where each model makes mistakes.
We also fine-tune existing models for a particular task or dataset, then compare them with the original model to check whether the changes help.
Our work includes model export, mobile inference and the data pipelines around them. We plan how to update models as the data changes.
- TensorFlow model development and data preparation
- Fine-tuning existing models for specific tasks
- Evaluation, model pipelines and retraining
- Sound, movement and on-device inference
- Behaviour scoring, fraud detection and automation
Payment solutions
Payments connected to your application.
We build payment gateways and connect them to the applications and systems your business depends on.
We build the customer interface, backend and integrations together, with attention to how your team will operate and maintain the payment system.
- Payment gateway development
- Payment integrations for web and mobile applications
- Customer-facing interfaces and backend services
- Connections to existing business workflows
Web & mobile software
Applications for learning, practice and business.
We build learning tools, applications that respond to sound, and business workflows that bring forms, signatures and payments together.
We develop the interface and backend, including content management and back-office tools. We consider performance, accessibility and how the code will be maintained.
- Websites, web applications and iOS / Android apps
- Learning and practice tools with useful feedback
- Frontend, backend and content management
- Business applications and integrations
Performance & evaluation
Does the improvement hold across the workloads that matter?
We help teams investigate bottlenecks and compare implementations. We start by creating representative datasets and agreeing what to measure: throughput, latency, resource use and whether the system still produces the right results.
We build repeatable test harnesses and run each implementation under controlled conditions. Repeated runs show how much the results vary across the selected datasets. Statistical tests and effect sizes help us assess the differences.
You receive the datasets, evaluation criteria, test harness and written analysis so your team can reproduce the comparison. The report explains which changes help, their running costs and where the evidence remains inconclusive.
- Representative datasets and workload design
- Evaluation criteria and reproducible benchmark harnesses
- Repeated runs under controlled conditions
- Statistical testing, effect sizes and technical reports
Systems & integrations
What happens when a message is late, a service fails, or the workload grows?
We design backend platforms and infrastructure, including APIs, messaging systems and event stores. We work on event routing, replay, audit trails and the connections between services.
Functional programming, typed interfaces and actor systems are part of our work on concurrency and state. We use these techniques where they make behaviour easier to understand and test.
- Backend architecture and critical infrastructure
- Messaging, event-driven systems and replayable logs
- Streaming services, audit and analytics pipelines
- Functional programming, concurrency and type-safe design
Cats-Actors is one public example of this work. Its public write-up on testing time-dependent behaviour shows how a controlled clock can make concurrent code easier to test.
Internal tools & frameworks
Tools for recurring rules and workflows.
We build domain-specific languages, rules engines and workflow tools when a team needs a better way to describe its work. This might be a visual state machine, a small language or a reusable application framework.
These tools can support operations, CRM, fraud workflows and developer teams. We design the language, execution model and interface together so teams can understand and maintain the rules they depend on.
- DSLs for rules, workflows and orchestration
- Visual state machines and operational tools
- Business-logic compilation and execution pipelines
- Reusable frameworks and developer tooling
Platform modernisation
Keep what works. Change what is getting in the way.
We help teams untangle legacy code, refactor complex systems and find clearer service boundaries. The work can start with an architecture review, an investigation into a performance problem or a system that has become difficult to change.
We plan changes around the existing business and team. Documentation, mentoring and predictable runtime behaviour matter as much as the new implementation.
- Architecture reviews and system rescue
- Legacy platforms, monoliths and cloud architecture
- Refactoring, performance and scalability
- Team mentoring and technical documentation
Architecture, delivery & handover
Planning the work and preparing the next team.
We help startups shape the system, plan the work and manage delivery. We can work alongside an existing team or help find a team to take over.
The handover includes the code, documentation and the reasoning behind the decisions. We work through it with the incoming team so they can continue the project.
- System design and technical direction
- Project planning and delivery management
- Helping assemble the next team
- Knowledge transfer, reviews and handover
Technical due diligence & transaction support
Understand the technology behind the business.
We review software and architecture during company acquisitions and sales, including the work needed to maintain or develop the systems. We speak with the teams involved to understand how things operate, identify technical risks and questions that need investigation.
We join technical working sessions and transaction war rooms to investigate questions as they arise and explain our findings to the people making decisions.
Our reports set out what we reviewed, the evidence behind our conclusions and what still needs checking. They also identify work to plan for after the transaction.
- Software and architecture reviews
- Technical questions and transaction working sessions
- Due-diligence reports and documented findings
- Technical priorities for the incoming team
Ideas made simple
What does your audience need to understand?
We teach complex technical subjects through courses shaped around the people learning and the work they need to do. Our teaching includes functional programming in Scala and Cats.
We also create infographics, animations and interactive explanations. People can follow a calculation, change a parameter and see the result, connecting an abstract idea with something they can explore.
- Tailored technical courses and practical code examples
- Infographics and animations that explain systems and processes
- Interactive explanations for exploring technical concepts
Have something to work through?
Tell us about the project, the team and what is getting in the way.
Talk through a problemMeet the people behind the work