§ Case files

Clients stay confidential. Results don't.

Four engagements, each recorded the same way: the situation, what I did, and what changed. Client names are withheld by agreement and shared on request. Where a figure is an estimate, it says so.

Document properties4 files
Clients
Client names withheld
Sectors
Pharma · Consumer health
Measured by
Cost, speed, risk. Not maturity.
Estimates
Marked as estimates
Outcomes only
File 01Consumer healthcare
Client name withheld

One trusted number across 100+ data sources

SituationReporting depended on more than 100 disconnected sources. Teams spent days assembling figures by hand, numbers differed between functions, and platform running costs kept rising.

What I didLed the architecture and delivery of a governed Azure lakehouse and warehouse: automated pipelines, a data quality framework, and catalogued ownership for each domain, so the business could run and extend it without us.

Databricks · Data Lake Gen2 · Synapse · Unity Catalog · Purview · Azure DevOps
75%
less manual reporting effort
100+
sources unified
~30%
lower operating cost (estimated)
File 02Global pharmaceutical
Client name withheld

One view of security risk instead of fifteen

SituationSecurity leadership had no single source of truth for assets and control coverage. Each tool reported its own version, so posture reporting was slow and inconsistent.

What I didDesigned and led delivery of a cybersecurity asset intelligence platform that consolidates the security estate into one governed model, with control-posture reporting and drill-down for leadership. Built modularly so new sources plug in without rework.

Databricks · Unity Catalog · Python · Power BI · GitHub Actions
15+
security tools in one view
60%
less time to produce posture reports
File 03Global pharmaceutical
Client name withheld

Decommissioning servers without breaking services

SituationA cloud migration had stalled. Hidden dependencies made it unsafe to retire servers based on utilisation alone, and nobody could say with confidence what would break.

What I didArchitected an engine that maps the full service hierarchy from CMDB and performance data, then verifies each decommissioning candidate against it before anything is switched off. It also improved the CMDB data it relied on.

Databricks · PySpark · SQL · Data Lake · GitHub Actions
+35%
CMDB data quality
File 04GenAI in production
Client name withheld

Business cases drafted in a quarter of the time

SituationWriting investment cases took weeks and drafts often missed the funding criteria, which delayed decisions on work that mattered.

What I didBuilt a retrieval-augmented generation (RAG) tool on Azure OpenAI that drafts business cases against the organisation's own strategy and funding criteria. People still own the final case. The tool removes the blank page.

Azure OpenAI · RAG · Databricks · Azure SQL · Python
75%
less time to first complete draft
Finding

None of these started with the technology.

Each one started with a number someone senior already cared about: reporting effort, security posture, migration risk, time to a funding decision. The architecture was chosen to move that number, then handed over so the client's own team could run it.

See where your organisation sits

Based in London · Working across the UK

Bring one number you'd like to move.

Thirty minutes, no deck. Tell me where data or AI spend isn't paying back, and I'll tell you honestly whether I'm the right person to help.

The City of London skyline with the Gherkin and the Shard
City of London51.5072° N, 0.1276° W