Services

What we build, run and fix

A full engineering practice under one roof: from the first architecture sketch through to the monitoring dashboard that wakes someone up. Engagements range from a two-week review to multi-year ownership of a platform.

AI and agentic systems

Applied intelligence that ships and keeps working. We build assistants that use tools and take real actions, answers grounded in your own content, and the evaluation harness that proves those answers are faithful before a customer sees them. We work across Anthropic Claude, Google Gemini and OpenAI GPT, and we know when to run open-weight models on hardware you control instead. An impressive demo that hallucinates on customer data is worse than no feature at all, so quality here is measured, not asserted.

  • Tool-using agents with strict tool contracts and bounded execution
  • Retrieval-augmented generation with hybrid vector and keyword search
  • Reciprocal rank fusion, language-scoped retrieval and chunk-level attribution
  • Golden-set evaluation in the pipeline: Hit@k, MRR and nDCG as a blocking gate
  • LLM-as-judge faithfulness scoring and hallucination containment
  • Streaming answers, graceful degradation, and human handoff on low confidence
  • Self-hosted, OpenAI-compatible model servers when data must not leave your estate
  • Model routing, token and latency budgets, and trace-level observability

Software development

Custom web platforms, internal tools and APIs, built as products that stay maintainable long after launch. Typed from database to interface, structured around clear domain boundaries, and covered by tests where correctness actually matters rather than everywhere for the metric.

  • Multi-tenant SaaS platforms with strict data isolation
  • Progressive web applications with offline-tolerant behaviour
  • REST APIs with versioning, resource contracts and OAuth2
  • Business process automation and workflow engines
  • Legacy modernisation and incremental rewrites without a big-bang cutover
  • Design systems and reusable component libraries

Data and database engineering

The schema is the part of your system you will live with the longest. We design relational models that stay comprehensible at scale, split responsibilities across databases where isolation demands it, enforce tenancy at the database level rather than trusting application code, and run migrations that never take production down.

  • Relational schema design, normalisation and query tuning
  • Row-level security and enforced multi-tenant isolation
  • Vector storage and semantic search for AI workloads
  • Additive, reversible migration strategies for live systems
  • Backup, snapshot and tested restore procedures
  • Reporting pipelines, exports and audit datasets

Cloud infrastructure and DevOps

Environments you can destroy and rebuild from a repository. We define infrastructure as code in layers, ship through container pipelines with blue-green releases, and keep self-managed databases and caches patched and replicated. Cost is treated as a design constraint, not a monthly surprise.

  • Infrastructure as code with layered, reviewable modules
  • Container build pipelines on versioned base images
  • Serverless and always-on workloads, sized to real traffic
  • Blue-green deployment, traffic shifting and instant rollback
  • Self-managed database and cache servers with replicas and snapshots
  • Cloud migration, cost optimisation and capacity planning

Security, privacy and compliance

Security designed in from the schema upwards, not audited in at the end. Authentication and single sign-on, permissions granular enough to survive a real org chart, immutable audit logging, and data handling that treats GDPR as an architectural requirement rather than a cookie banner.

  • OAuth2, single sign-on and session hardening
  • Role and policy based access control
  • Immutable audit trails for authentication and permission changes
  • GDPR-aligned data handling, retention and consent flows
  • Secret management, key rotation and least-privilege service accounts
  • Dependency, input and access reviews of existing codebases

Mobile and cross-platform apps

One codebase, three destinations. We ship web, Android and iOS from a shared source tree with native capabilities where they matter: platform sign-in, push notifications, camera and file access, and store releases handled as part of the ordinary delivery pipeline rather than as a quarterly ordeal.

  • Cross-platform apps from a single shared codebase
  • Native sign-in with Google, Apple and Microsoft accounts
  • Push notifications and background synchronisation
  • Build flavours for staging, production and white-label variants
  • App store and Play Store release engineering
  • Offline tolerance and low-bandwidth behaviour

Realtime systems and integrations

The parts of a platform that fail loudest are the seams between systems. We build message queues, event pipelines and websocket channels that degrade gracefully, and connect payment, billing, email and third-party APIs so a partner outage becomes a delayed job rather than a support incident.

  • Websocket channels for live updates and messaging
  • Queue and publish-subscribe pipelines with retries and dead lettering
  • Subscription billing, metering and invoicing flows
  • Transactional and campaign email with deliverability tuning
  • Third-party API integrations with idempotency and backoff
  • Internationalisation and multilingual delivery with enforced parity

IT support and managed operations

Ongoing responsibility for systems that have to keep working, whether we wrote them or not. Monitoring that alerts on symptoms users actually feel, patching kept boringly current, and an incident path that ends in a written explanation rather than a shrug.

  • Monitoring, alerting and uptime reporting
  • Operating system, runtime and dependency patching
  • Incident response with written post-incident reviews
  • Backup verification and disaster recovery rehearsals
  • Performance profiling and capacity planning
  • Workstation, network and day-to-day user support

Consulting and technical leadership

Senior engineering judgement, available by the day. Architecture reviews, technology selection, due diligence on a codebase you are about to inherit, or acting as the technical counterpart to a team that has no in-house lead. The output is a decision you can defend, written down.

  • Architecture and codebase reviews with prioritised findings
  • Technology selection and build-versus-buy analysis
  • Technical due diligence before an acquisition or handover
  • Cloud and licensing cost reduction
  • Mentoring, code review culture and delivery process coaching
  • Fractional technical leadership for teams without a lead

Engagement models

Ways to work together

The right shape depends on how well defined the problem is. All three start with the same conversation.

Project delivery

A defined scope with a fixed shape, milestones and a handover. Best when you know what needs to exist and want someone accountable for making it exist.

Ongoing partnership

A recurring monthly commitment covering development, operations and support. Best for a live product that keeps evolving and has to stay up while it does.

Advisory and review

Days or weeks of senior input: an architecture review, a second opinion, due diligence, or unblocking a decision your team keeps circling.

Not sure which of these you need?

That is a normal place to start. Describe the situation in plain language and we will tell you which parts are engineering problems, which are process problems, and what we would do first.