Recent work

Recent work: what I found, and what I built.

From January to October 2026 I worked as an enterprise architect inside a UK wealth management firm. Dozens of core systems, several suppliers, a regulator watching and more than a decade of accumulated workarounds.

The brief was engineering transformation. In practice that meant three things: find where things actually break, prove it from the source code, and give leadership something they can decide on.

These are the eight themes that came out of it, followed by four from the ten years before. The clients stay anonymous. The methods are mine.

At a glance

source repositories read and mapped
1,100+
systems reverse-engineered from code
46
compiled knowledge articles, every one traceable to source
220+
levels of AI engineering context, from global standard to single repository
3
years leading enterprise architecture for a regulated private bank
10
claims made without evidence
0

2026

Ten months inside a regulated estate. Eight problems traced to source.

AI-native engineering, with the guard rails built in

Engineering standards that live where the AI reads them, not in a wiki nobody opens.

Diagram: a three-level context hierarchy. Level 1, the global engineering standard, flows into level 2, domain context, then level 3, repository context. Every AI session inherits all three. Alongside, six review skills run on demand: security review, threat model, data-model review, dependency audit, integration pattern and regulatory checkpoint. A release gate on the installer fails the build if its contents drift from source.
View the diagram full size

The problem. Engineers were already using AI coding tools. Governance had not caught up: policy documents with no enforcement point, and pressure to install third-party plugins nobody had vetted.

What I did

  • Designed a three-level context hierarchy: one global engineering standard, a domain layer for each business area, and a file per repository. Every AI session inherits all three, so the principles travel with the work.
  • Wrote the governance as plain markdown under version control, distributed by a one-command installer. First-party files only. No unvetted plugins.
  • Built a set of review skills the AI runs on demand: security review, threat modelling, data-model review, dependency audit, integration-pattern check and a regulatory checkpoint.
  • Put release gates on the installer itself. A build whose bundled contents drift from the source fails loudly before it reaches a single engineer.
  • Shaped the rollout as a controlled pilot: two squads, non-production work, with the security gate as a prerequisite rather than an afterthought.

What changed. Engineering principles became something the tooling applies at the point of work, instead of something people get reminded about at a review board.

Useful if your engineers use Claude Code, Copilot or Cursor and your AI governance is mostly a PDF.

Reading the estate from the source code

Over a thousand repositories. Every claim traced to a file and a line number.

Diagram: from opinion to file and line. The source estate of 1,100+ repositories, 600,000+ files and 46 systems feeds an AI-assisted method that triages by integration centrality and regulatory exposure, producing findings on integration edges, system-of-record lines, runtime flows and risks. Every claim carries one of three labels: Fact, read in the code at a file and line; Inference, reasoned from adjacent evidence; or Not yet verified, which stays an assertion.
View the diagram full size

The problem. Nobody held a current picture of how the core systems worked. Documentation was years out of date, suppliers owned parts of the stack, and design conversations started from memory and opinion.

What I did

  • Recovered the full source estate: more than 1,100 repositories and over 600,000 files.
  • Built a reusable, AI-assisted reverse-engineering method. It keeps three things apart: the method, the context for each system, and the findings. It triages which system to analyse next by how central it is to integration and how exposed it is to regulation.
  • Mapped 46 systems: integration edges, system-of-record boundaries, runtime flows and risks.
  • Held every finding to one rule. It is anchored to repository/path/file:line and labelled Fact, Inference or Not yet verified. A catalogue entry stays an assertion until the code proves it.

What changed. Design conversations moved from “we think it works like this” to “it works like this, and here is the line”. The same evidence then carried supplier onboarding, platform replacement options and a reconciled application inventory.

Useful if you run legacy core systems, depend on supplier-owned code, face a due-diligence exercise, or suspect your documentation stopped telling the truth some time ago.

An institutional memory that outlives the people who built it

A knowledge base built to be handed over, and queried by people and AI alike.

Diagram: knowledge the organisation owns. Raw verbatim sources are compiled into 220+ cross-linked, sourced articles, which produce answers held to eight verified-answer rules. Everything passes a credential scan at ingest, then serves three consumers: developer AI that starts every repository already knowing the estate, an executive query page with plain-English answers and sources shown, and a successor who can pick it up cold.
View the diagram full size

The problem. Critical knowledge about the estate lived in people's heads and in scattered wikis. When someone leaves, it leaves with them. Senior roles had turned over without a proper handover.

What I did

  • Designed a separate, hand-over-able knowledge structure. Each knowledge base holds raw verbatim sources, compiled and cross-linked articles, query outputs and a changelog.
  • Compiled five knowledge bases covering the systems estate, the advice platform, a core legacy platform, data architecture and AI engineering: more than 220 articles, each traceable to its source.
  • Wired it into the engineering AI context, so a developer's assistant in any repository starts out already knowing the estate.
  • Wrote a verified-answer standard: eight rules an answer has to meet before it counts as known.
  • Prototyped an executive query page. Type a question, get a plain-English answer with its sources shown. Built API-first, with the answer contract in the schema, so an answer without evidence is an invalid response rather than a weak one.
  • Put a credential scan on the ingest gate. Source code carries secrets, and knowledge bases leak them if nobody checks.

What changed. Knowledge the organisation owns, instead of knowledge on loan from individuals. A successor with no context can pick it up cold.

Useful if you carry key-person risk, rely on interim or contract architects, or have AI assistants confidently making things up about your own systems.

This is not a reporting problem. It is a data architecture problem.

When the numbers will not reconcile, the fix is rarely in the report.

Diagram comparing two models. Truth reconstruction: three sources wired to four reports in a tangle, where every consumer rebuilds the truth, numbers disagree and each fix adds a layer. Authoritative consumption: one owned source with history kept publishes to four consumers, so point-in-time questions have one answer.
View the diagram full size

The problem. Reports disagreed with each other. Point-in-time questions, such as what the firm knew about a client on a given date, could not be answered reliably. Every fix added another reconciliation layer downstream.

The cause. Systems overwrote history in place. Ownership of the source of truth was unclear by data type. Consumers rebuilt the truth for themselves instead of consuming it from an authoritative source. One valuation figure passed through six layers with no real-time reconciliation between them.

What I did

  • Framed the thesis: truth reconstruction against authoritative consumption. Every consumer reconstructing the truth is a symptom. One owner publishing it is the fix.
  • Applied it across the estate: temporal integrity, source-of-truth ownership by data type, and an enterprise asset registry.
  • Built the registry as a queryable graph with blast-radius analysis. Ask what depends on a service and it returns every impacted asset, with regulatory obligations inherited down the dependency chain. One query on a shared service returned 207 impacted assets across five groups.

What changed. Remediation aimed at the source of the defect, not another reconciliation report stacked on top of it.

Useful if you have regulatory reporting that needs point-in-time answers, or a data platform with several “golden sources” that disagree.

Finding the failures nobody could see

Silent failures never show up on a dashboard. They show up as phone calls.

Diagram: a case flows from Capture through Queue A, Queue B and Pipeline to “Done?”. Four hidden failure points: the contract is checked downstream of capture; Queue A stalls on a timer with no alert; Queue B parks and retries with no alert; the pipeline catches an exception and returns SUCCESS. Action one: measure the silent failure, read-only, before changing a line.
View the diagram full size

The problem. A regulated new-business process with low straight-through processing, elapsed times measured in weeks, and most cases generating a follow-up contact. The business had measured the symptoms well. Nobody had traced them into the code.

What the code showed

  • Three asynchronous queues, each drained on a timer, each a place a case could stall without telling anyone.
  • A pipeline step that caught every exception and reported success. Failed cases were never retried and never surfaced.
  • A data contract enforced on the wrong side of a system boundary. Incomplete records were rejected silently downstream, and staff had worked out that editing a field and changing it back would force a retry.

What I did. Mapped every symptom to a root cause, then wrote the plan in two parts. Four actions that could start that week, on artefacts the firm controlled, each with an owner and a success measure. Around them, a five-move structure to deal with everything else.

The first action cost nothing: measure the silent failure, read-only, before changing a line. The whole business case rested on a number nobody had.

What changed. A plan that could start in days, instead of a programme that needed months of discovery first.

Useful if your operations team has built workarounds into its daily routine, or your failure demand is high and nobody can say why.

Getting off legacy without betting the business

Build the seam first. Earn the product later.

Diagram: channels, partners and internal teams all connect to the seam, a stable contract owned by the business rather than shaped by the vendor. Behind the seam, capabilities leave the legacy core one at a time and move to new services, each move passing a decommission gate.
View the diagram full size

The problem. A core platform supported by a third party, costly to change and holding the business back. A request to put partner APIs on top of it. A legacy database with vendor support ending and a hard deadline attached.

What I did

  • Separated two requests that looked like one. A partner API is a product, with consumers and backward-compatibility promises. A decoupling layer is a seam, built so the thing behind it can be replaced. Publishing the product first would have welded the business to the system it was trying to leave. The recommendation: build the seam, earn the product.
  • Wrote a future-state architecture with a staged migration and explicit decommission gates, so capabilities move one at a time while the business keeps trading.
  • Reframed the database exit. Every dataset it held already existed elsewhere, so this was a decommission, not a data migration: move the processing logic, replace the admin screens, switch it off. The problem shrank, and AI-assisted code conversion became a realistic option.
  • Assessed every option against three stated tests: deadline, cost and quality.

What changed. Options sized honestly, with nothing presented as decided that had not been decided.

Useful if you face vendor lock-in, an end-of-support date, or a “we just need an API” request that is really a replacement strategy in disguise.

A data platform standard, written before the suppliers wrote one

If you do not write the standard, your suppliers will. Each of them a different one.

Diagram: one standard across every vendor. A pipeline runs from sources to staging, models, marts and consumers. Underneath every stage, the platform provides six hooks: tests on every model, data-quality rules as code, heuristics to catch the odd, restart from the failure, telemetry per run, and end-to-end observability. Built in, not bolted on.
View the diagram full size

The problem. A move from a licensed low-code ETL tool to a code-first stack: dbt, managed Airflow and a cloud data warehouse. Several delivery partners were working in the estate, a licence renewal set the deadline, and each partner brought its own way of doing things.

What I did

  • Wrote the platform reference: the end-to-end pipeline, its layers, patterns and controls, readable by someone who was not in the room.
  • Set one dbt standard to hold across every vendor.
  • Specified hooks built into the platform from day one: tests, data-quality rules, heuristic checks, restartability, telemetry and pipeline observability. Things the platform provides, not things each team has to remember.
  • Produced a deep-dive on the legacy tooling so the migration scope was evidenced, not estimated, and a briefing deck for leadership.

What changed. The client's engineering positions were on paper before the direction of travel was set by whichever supplier shipped first.

Useful if you are modernising ETL, running multi-vendor delivery, or planning to bring a platform back in-house.

Architecture people can actually use

Governance theatre is optional. Clear decisions are not.

Diagram: three tiers, never two. Tier 1, already decided, and where: stated as fact, not reopened. Tier 2, proposed here, and on what basis: evidence shown, open to challenge. Tier 3, open, and who needs to decide: named plainly, never implied. Below, every finding, whatever its severity, is classified as fix now, fix over time or defer.
View the diagram full size

The problem. Architecture that sits in review boards and unread documents does not change what gets built. It just slows it down.

What I did

  • Designed a lightweight solutions engineering model: clear criteria for when architecture must be engaged, a one-page framing template, explicit decisions. No new review board. The burden of proof sits with the exception.
  • Wrote every paper in three tiers: already decided (and where), proposed here (and on what basis), and open. Nothing proposed reads as decided.
  • Produced a readiness report ahead of a major platform launch. Every finding, whatever its severity, classified as fix now, fix over time or defer, so leadership could make the call.
  • Ran a 124-requirement fit assessment for a supplier bid. Every rating evidenced or marked Unknown. Nothing invented.
  • Wrote handover and supplier onboarding packs that let a newcomer, internal or external, be useful in week one.

What changed. Architecture that is connected to delivery, and documents that get read.

Useful if your architecture function is known mainly for saying no, slowly.

Earlier work

Ten years running architecture for a private bank

Before the current engagement I spent ten years as head of enterprise architecture for an offshore private banking and wealth business, part of a large international banking group. Cross-border, regulated, and small enough that architecture had to earn its place in delivery every week.

I ran a team of up to four enterprise architects, reported to the CIO and gave architectural input to the CEO. These four pieces of work show what that looked like in practice.

Opening a private bank account in fifteen minutes

From a paper-heavy onboarding process to fifteen minutes on a phone, with the identity checks built in.

Diagram: onboarding in fifteen minutes, end to end, in five steps: open the app on the client's phone, read the passport chip via NFC, match the face with facial recognition, verify identity, and open the account in CRM and core banking. Underneath sits one client identity: a single customer identity, a 360-degree client view, single sign-on and simpler registration.
View the diagram full size

The problem. Onboarding a private banking client meant forms, certified copies and days of back-and-forth. Every new client started the relationship by waiting.

What I did

  • Designed an end-to-end digital onboarding flow that takes fifteen minutes from start to open account.
  • Put the identity checks on the phone: the app reads the chip in the client's passport and matches it to their face with facial recognition.
  • Integrated the flow with the CRM and the core banking platform, so a verified client lands in both without anyone rekeying data.
  • Designed the single customer identity model and 360-degree client view behind it, which also made single sign-on and simpler registration possible.

What changed. Phase one was delivered. The identity model it rests on means every later channel starts from one client record, not several.

Useful if your onboarding is slow, manual or duplicated across systems, or your “single view of the customer” is a project that never quite lands.

Architecture governance, built from nothing

A review forum that people brought work to, instead of one they worked around.

Diagram: architecture governance from a blank page. A local review forum, set up and chaired from scratch, sits between the group architecture forum with its guardrails and standards, and stage-gate procurement that requires an architecture view before purchase. The forum works from an estate model kept current, showing current state and target state, mapped to business strategy and group guardrails and based on TOGAF.
View the diagram full size

The problem. No architecture governance existed. Technology decisions were made project by project, procurement went ahead without an architectural view, and nobody held a current picture of the estate.

What I did

  • Built the architecture governance framework from a blank page, and set up and chaired the local architecture review forum.
  • Represented the business at the group-level architecture forum, keeping local decisions inside group guardrails.
  • Took stage-gate approval over technology procurement, and negotiated vendor terms.
  • Kept a current-state and target-state model of the whole estate, built on TOGAF and mapped to business strategy.
  • Mentored my successor and left a documented knowledge base, scheduled for group-wide rollout.

What changed. Architecture became a step in how technology got bought and built, rather than a document produced afterwards. The forum was the escalation point for hard calls across IT.

Useful if you need governance that shapes decisions without becoming governance theatre.

Moving a bank to the cloud, desk included

A cloud strategy that covered the data centre and the desktop, not just one of them.

Diagram: data centre and desktop, in step. Before: on-premise workloads, a legacy Citrix desktop, core banking on-premise and ageing payment rails. All four pass through one framework, a cloud strategy and migration plan plus an Office 365 pilot. After: workloads on Azure, Azure Virtual Desktop, SAP core banking with Salesforce Financial Services Cloud, and modernised CHAPS and BACS payments.
View the diagram full size

The problem. On-premise infrastructure, an ageing hosted desktop platform, and a core banking and CRM estate that needed modernising at the same time. Doing these one after another would have taken years.

What I did

  • Wrote the cloud framework and the migration strategy for moving on-premise workloads to Azure.
  • Designed a secure hosted desktop on Azure Virtual Desktop that replaced the legacy Citrix platform.
  • Led the Office 365 pilot.
  • Set the enterprise architecture for a Salesforce Financial Services Cloud rollout, and led the parallel modernisation and cloud migration of core banking on SAP.
  • Modernised the CHAPS and BACS payment infrastructure.

What changed. One framework governed the whole move, so infrastructure, desktop, CRM, core banking and payments modernised in step instead of pulling against each other.

Useful if you are planning a cloud migration in a regulated business and want one coherent plan rather than several competing ones.

One data feed for every regulatory report

Regulatory reporting from one production-grade feed, not a spreadsheet per regulator.

Diagram: one feed for every report. Core banking, CRM and payments feed a high-availability data services platform on Azure with one production feed. It serves four regulatory outputs, GAAP, BCBS, PCR and GDPR, plus Power BI management reporting. Reports agree with each other by design.
View the diagram full size

The problem. Regulatory and management reporting drew on separate extracts, built separately, for different audiences. The same figure could be produced several ways, and each report carried its own risk.

What I did

  • Designed and built a high-availability data services platform on Azure.
  • Standardised the regulatory reporting extracts on it, covering GAAP, BCBS, PCR and GDPR obligations.
  • Moved management reporting into Power BI on the same single production-grade feed.

What changed. Regulatory and management reports drew from one source, so they agreed with each other by design. It is the same principle I apply today: fix the data at source, and the reports take care of themselves.

Useful if your regulatory returns and your management information disagree, or each new reporting obligation means building another extract.

Recognise any of this?

Most of the problems above are not unusual. They are what happens to any estate that has grown for a decade under delivery pressure. The fix is also not unusual: look beneath the symptom, find the structure, fix it there.

I work across board-level strategy and hands-on engineering, with 14 years in banking and wealth management and more than 30 in technology. If your estate has a story like one of these, I would like to hear it.

Start a conversation

Fix at source. Everything downstream gets simpler.