I use agentic AI in day-to-day delivery: multi-agent spec-writing playbooks for
data-pipeline, web and infrastructure work, with adversarial verification and an
ADR loop; harness and context engineering; and agent-runnable tooling for Azure
DevOps backlog sync and workspace setup. My knowledge base on AI engineering covers
six disciplines: Prompt Craft, Context, Harness, Intent, Specification and
Orchestration Engineering.
Over eight years I’ve moved from .NET web applications and microservice
migrations on Azure to leading AWS cloud and data architecture. My recent work
includes CI/CD and reusable infrastructure modules, platform standards for APIs and
caching, GDPR compliance, and an analytical data product on the medallion
architecture.
I'm an AWS & Azure Cloud and Data Architect based in Leeds, United Kingdom, and
today an Agentic AI Implementation engineer, Forward deploying AI solutions to business.
I design and build cloud platforms that other teams and agents can rely on. Over eight
years I've moved from .NET web applications and microservice migrations on Azure to
leading AWS cloud and data architecture. My recent work includes CI/CD and reusable
infrastructure modules, platform standards for APIs and caching, GDPR compliance, and an
analytical data product on the medallion architecture. I also use agentic AI in
day-to-day delivery: multi-agent spec-writing playbooks for data-pipeline, web and
infrastructure work, with adversarial verification and an ADR loop; harness and context
engineering; agent-runnable tooling for Azure DevOps backlog sync and workspace setup;
and a structured knowledge base on AI engineering disciplines.
Skills
Architecture, end to end.
Good architecture is mostly invisible. It's what lets everything else move fast and keep working under load.
From cloud and data architecture to the platforms and web apps on top, I work across
the whole stack. I design systems, then build, ship and run them.
01/02
Architecture
I design well-architected systems on AWS, Azure or anywhere, turning requirements into resilient, scalable and cost-aware solutions.
Agentic AI
Multi-agent spec-writing playbooks with adversarial verification and an ADR loop, built on harness and context engineering.
Data & ML
Data modelling, pipelines and analytics, through to operationalising machine learning from features to production.
Cloud, DevOps & .NET
Infrastructure as code, CI/CD and Kubernetes, and the .NET APIs and web apps on top. I ship and run platforms, not just build them.
B.Tech in Computer Science Engineering 2012 – 2016
Employment
9+ years of professional experience across 4 roles
2023 – Present
PebblePad · Senior Software Engineer
Leading AWS cloud solutions, data architecture and agentic development.
July 2021 – Aug 2022
Accenture · Senior Product and Platform Engineer
Architected and built microservice-based platforms on Azure, with the data pipelines and stores behind them, and owned their delivery to cloud infrastructure through infrastructure-as-code and CI/CD.
December 2017 – June 2021
Imaginea Technologies (now part of Accenture) · Senior Software Engineer
Modernised legacy monoliths into cloud-hosted microservices on .NET Core, designing APIs, data models and integrations, building analytics and reporting features, and mentoring developers across the team.
February 2017 – November 2017
Cognizant · Programmer Analyst Trainee
Built ASP.NET web forms and MVC applications, and contributed to proof-of-concept work across data access, services and early analytics.
Selected work
Projects, as case studies.
A decade of delivery and research, from architecting Azure platforms to
modernising decade-old monoliths and prototyping with AI. Each card opens
into the context, my contribution and the outcome.
25Projects delivered
4Flagship projects
Lead
Agentic Development
Built agent tools and workflows that carry the platform's infrastructure and deployment rules from specification to tested code.
Claude CodeAI coding agentsAgent memoryAgent swarmsAWS agentic AI
Architect
Analytical Data Product
Architected an analytical data product on the medallion architecture, built entirely from AWS services.
AWS GlueAmazon S3 TablesApache IcebergAWS Lake FormationAmazon KinesisSparkAWS CDK
Architect
API Framework
Built the framework for web applications on AWS, from API Gateway and Lambda or ECS to SQS, IAM, SSM and Secrets Manager, and built APIs on it.
Amazon API GatewayAWS LambdaAmazon ECSAmazon SQSAWS Secrets ManagerSSM Parameter StoreIAM
Lead
Build & Deploy
Led the CI/CD for AWS cloud-native development and the plug-and-play infrastructure modules it deploys.
AWSCI/CD pipelinesInfrastructure as CodeInfrastructure modules
01/02
Lead
Agentic Development
Built agent tools and workflows that carry the platform's infrastructure and deployment rules from specification to tested code.
Claude CodeAI coding agentsAgent memoryAgent swarmsAWS agentic AI
Read the case study
Context
AI coding agents are only as good as the context they are given: generic agents do not know a platform's niche infrastructure guidelines or its deployment process.
What I did
I built tooling for agentic development in two parts. The first is a set of agent tools that carry the niche infrastructure guidelines and the deployment process, so agentic work follows the platform's own rules rather than generic defaults. The second is a set of workflows that take a piece of work from technical specification through planning, then on through development and testing as one process, which I applied to building and testing the data services for the Analytical Data Product.
Outcome
Agentic work follows the platform's own infrastructure and deployment rules, and data services move from specification to tested code through one repeatable workflow.
Architect
Analytical Data Product
Architected an analytical data product on the medallion architecture, built entirely from AWS services.
AWS GlueAmazon S3 TablesApache IcebergAWS Lake FormationAmazon KinesisSparkAWS CDK
Read the case study
Context
Reporting and analytics needed a foundation that could serve routine reports, on-demand questions and large-volume analysis without each depending on the operational databases.
What I did
I worked on the data architecture and engineering of the product. It follows the medallion architecture: raw data lands first, is cleansed and conformed, and is then shaped into reporting-ready datasets, which gives robust reporting plus on-demand and large-volume analytics through a self-service portal. Data comes in through Amazon Kinesis, the ETL pipelines are built with AWS Glue and the layers are stored in Amazon S3 Tables (Apache Iceberg), with the infrastructure defined in AWS CDK. I implemented tenant isolation with AWS Lake Formation, including row-level cell filtering defined in AWS CDK (C#), and kept the whole product within AWS product offerings so it is operated and secured with the same services as the rest of the platform.
Outcome
One analytical foundation for reporting and self-service analysis, separated from the operational systems and built entirely on AWS.
Architect
API Framework
Built the framework for web applications on AWS, from API Gateway and Lambda or ECS to SQS, IAM, SSM and Secrets Manager, and built APIs on it.
Amazon API GatewayAWS LambdaAmazon ECSAmazon SQSAWS Secrets ManagerSSM Parameter StoreIAM
Read the case study
Context
Every new API needs the same foundations: agreed formats, request handling, queues, configuration, secrets and the cloud infrastructure it runs on. Assembled separately each time, they drift apart.
What I did
I created the framework and its tooling so that every aspect of web development on AWS is in place from the start: the standard formats and systems for building an API, request handling through Amazon API Gateway on AWS Lambda or Amazon ECS, asynchronous work through Amazon SQS, and the infrastructure modules for IAM, SSM Parameter Store and AWS Secrets Manager. I also built a couple of the platform's APIs on it.
Outcome
New web applications and APIs start from one consistent, deployable baseline that matches the rest of the platform.
Lead
Build & Deploy
Led the CI/CD for AWS cloud-native development and the plug-and-play infrastructure modules it deploys.
AWSCI/CD pipelinesInfrastructure as CodeInfrastructure modules
Read the case study
Context
Every new service needed a way to be built, tested and released, and the infrastructure underneath it. Done separately each time, that produces as many pipelines and as many infrastructure styles as there are services.
What I did
As the lead implementation engineer I set up the CI/CD for AWS-based cloud-native development, giving every service the same route from commit to a running environment. Alongside the pipelines I prepared cloud modules designed to plug and play, each packaging a piece of infrastructure so services can be assembled in different combinations without bespoke provisioning. Together they established the standards services follow for how they are built, configured and deployed, and moved infrastructure management to one central, version-controlled place.
Outcome
Services are composed from shared, standard modules and released through one pipeline approach, and the infrastructure behind them is managed centrally.
Developer
Storage Limitation
Built a long-running GDPR retention job on ECS Fargate that removes personal data once it is no longer needed.
Amazon ECSAWS FargateAmazon EventBridgeC#GDPR
Read the case study
Context
Under the GDPR's storage-limitation principle, personal data may be kept for no longer than is necessary for the purpose it was collected for.
What I did
I worked on bringing the platform into line with that principle: capturing only the information that is needed, and removing it once its purpose has passed. The clean-up runs as a background job like the Compliance Tool, but because it is long-running it is a container task on Amazon ECS with AWS Fargate rather than a Lambda function.
Outcome
The platform captures and keeps less personal data, and holds it only as long as it is needed, in compliance with the GDPR.
Architect
Distributed Cache
Introduced Valkey as a shared distributed cache and one standard caching approach across the application.
ValkeyDistributed cacheAWS
Read the case study
Context
Caching had grown up feature by feature, each with its own conventions, and in-memory caches held separately by each instance of a service cannot stay consistent with one another.
What I did
I introduced Valkey as the application's shared, distributed cache, giving every instance of a service the same shared view instead of a private, inconsistent one. With the cache in place I defined one standard caching approach, with common conventions for key naming, expiry and invalidation, and moved existing caching onto it so cached data behaves the same way in every part of the application.
Outcome
One distributed cache and one caching approach across the application, taking repeated reads off the underlying data stores.
Developer
Compliance Tool
Built an event-driven compliance job on AWS Lambda and EventBridge so the company's compliance checks always run.
AWS LambdaAmazon EventBridgeServerlessC#
Read the case study
Context
A company is subject to many compliance checks, and the risk lies less in any single check than in one being missed.
What I did
I built the compliance tool as a serverless background job: an AWS Lambda function triggered by Amazon EventBridge events. Each check runs when its event arrives, records its outcome, and surfaces anything outstanding, so compliance no longer depends on someone remembering to run it.
Outcome
Compliance checks run consistently on events, with a record of each and early sight of anything outstanding.
Architect
Document Generator
Built a centralised document-generation platform on Azure, validating policy data with InRule across products.
Multiple products each needed to generate documents from policy information, with no shared way to validate and verify that data or apply business rules.
What I did
As Solution Architect and Lead Developer I spearheaded a new microservice and stood up the Azure environment with Terraform, wiring the services together and modernising the form-generation and document-processing logic. The platform validates policy information and runs InRule logic centrally so any product can request a document.
Outcome
One centralised service now serves document generation across products, with infrastructure reproducible from code.
Developer
Affinity
Remapped a legacy system into modern APIs and mentored the team through the transition.
C#Web API.NET Core 3.1EF CoreDockerPCFNGINX
Read the case study
Context
A legacy system needed to be exposed to modern front-end applications, with more programs onboarded from various sources into microservice-based endpoints.
What I did
As Senior Developer I designed and built backend APIs in C# and Web API on .NET Core 3.1 (EF Core, SQL Server), containerised with Docker, deployed on Pivotal Cloud Foundry and routed through NGINX. I focused on remapping the legacy system into APIs the front end could consume, and reviewed and mentored junior developers.
Outcome
The legacy system moved to a more modern, scalable architecture with a higher-quality, maintainable codebase.
Lead
Swipe-In
Migrated a monolith to microservices on AKS with dynamic, reflection-driven reporting.
C#ASP.NET MVCGraphQL.NET CoreEF CoreDockerAKS
Read the case study
Context
A monolithic application needed to become a microservice-based system, with flexible reporting users could shape themselves.
What I did
As Lead Developer I oversaw the migration to microservices using C#, ASP.NET MVC, GraphQL Web API, .NET Core, Windows services, EF Core, SQL Server and Docker. We added dynamic reporting that lets users pick metrics in the UI and retrieve data via reflection and EF Core, deployed on Azure and migrated to AKS. I guided the team and contributed to design and architecture decisions.
Outcome
The app runs as containerised microservices on AKS with user-driven reporting.
Managers needed a tool to find employees with specific skills or areas of expertise.
What I did
As team lead and architect I built the Angular front end and set the standards for componentisation and inter-component communication, then led the GraphQL server that exposes the data and the database design that backs it without violating normal forms.
Outcome
A skills-search tool for managers, deployed on Azure with AKS.
Lead
Smart Comm
Stood up a buffer microservice that kept forms and documents flowing correctly across systems.
Document and form generation spanned several systems with no reliable hand-off between them.
What I did
As Lead Developer I set up a new microservice and the Azure environment (C#, Azure Functions, .NET Core 3.1, EF Core, Terraform, SQL Server, API Management), and implemented a buffer-state service that ensures the correct forms and documents are created and fed into the right downstream system.
Outcome
Seamless connectivity across document systems and a streamlined generation process.
Developer
Unqork
Worked on modernising AS400 and in-house legacy systems into a microservice architecture for quoting, payment, policy and renewals.
Microservices
Read the case study
Context
The application lets insurance agents and customers draw up a quick quote, make payment, generate the policy and renew expiring policies, and it ran on age-old legacy systems such as AS400 and in-house applications.
What I did
I worked on the modernisation of those legacy systems into a more modern microservice-based architecture, uniting the various programs under one platform.
Architect
Firstrate
Led the modernisation of a decade-old, 42-project WebForms application into microservices.
A multi-layered application in use for over a decade, spanning 42 projects, needed to be enhanced and split into microservices.
What I did
As Assistant Architect and Team Lead I worked with architects and project managers to design and implement the split into microservices, provided technical guidance, integrated external systems (HelloSign, ImageRight, Braintree) and documented the patterns, components and layers.
Outcome
The application kept meeting business needs while moving toward a maintainable, microservice architecture, backed by a clear specification.
Lead
Inzurezone
Enabled seamless, secure single sign-on transfer between a .NET and a Java platform.
C#ASP.NET MVCWeb APIAngular 6SQL ServerPython
Read the case study
Context
Users had to move from a Microsoft-based solution to a Java-based one without logging in again, and without compromising security.
What I did
As developer and team lead on a microservice-based architecture I implemented secure REST API calls to transfer users between platforms, working across C#, ASP.NET WebForms and MVC, Web API, Angular 6, AngularJS, SQL Server and Python to enhance performance and functionality.
Outcome
Users transfer between applications without re-authenticating, with security and performance preserved.
Developer
Reimbursement
Refactored a reimbursement monolith into microservices with stateful, automated email workflows.
C#ASP.NET MVCGraphQL.NET CoreEF CoreAKSDocker
Read the case study
Context
A legacy monolithic reimbursement system needed migrating to a microservice architecture on a modern stack.
What I did
I refactored the existing code into new microservices (C#, ASP.NET MVC, GraphQL Web API, .NET Core, Windows services, EF Core, SQL Server, AKS, Docker), integrated Google mail for stage-by-stage reminder emails, and used the chain-of-responsibility and state patterns to manage the reimbursement form's state, with reporting across business aspects.
Outcome
A microservice reimbursement workflow with automated notifications and reporting at every stage.
Built the Angular UI skeleton and helped shape the GraphQL backend over a normalised schema.
C#AngularGraphQLSQL Server
Read the case study
Context
A new application needed a front-end UI consuming GraphQL endpoints and a backend to expose the data.
What I did
As subject-matter expert and senior developer I built the skeleton of the Angular front end against the GraphQL endpoints, and assisted on the GraphQL server and the database design that backs it without violating normal forms.
R&D
Proof of Concepts
Prototyped across a broad stack and built custom UiPath activities for ImageRight automation.
An R&D effort to explore and integrate new technologies into the wider platform.
What I did
I worked on POCs spanning C#, Web API, Windows services, SQL Server, MongoDB, AWS SNS, Elasticsearch, Kibana, UiPath Orchestrator, ImageRight, Docker and Kubernetes. I built custom UiPath activities that drive UI processes against ImageRight, and worked with the middleware team to set up and maintain RPA processes via Octopus.
Outcome
New technologies were de-risked through working prototypes and integrated into the project.
Architect
Multi-Tenant Data Platform
Built a multi-tenant PostgreSQL platform where one EF Core migration set provisions every tenant, across all three isolation strategies.
C#.NET 9EF CorePostgreSQLMediatRBlazor WASMDocker
Read the case study
Context
SaaS platforms have to choose how far apart tenants live: a database each, a schema each, or packed into capacity-managed shared databases. Most codebases hard-wire one answer; this platform set out to support all three behind one control plane.
What I did
I designed a tenant-management control plane (Clean Architecture, MediatR CQRS, EF Core for writes with Dapper reads) and a schema-aware EF Core data plane. By replacing EF's internal IMigrationsAssembly and IModelCacheKeyFactory services, a single migration set applies to any tenant schema with its own __EFMigrationsHistory, while a provisioning service creates databases and schemas on demand with defence-in-depth around dynamic DDL. The sample domain leans on PostgreSQL ltree and jsonb with GiST/GIN indexes.
Outcome
One codebase provisions and migrates tenants under database-per-tenant, schema-per-tenant and grouped shared databases, administered from a Blazor WebAssembly console with OpenTelemetry throughout.
Serialized domain objects outlive the code that wrote them: rename a property or change a type and every old payload in the database stops deserialising cleanly. EF migrations fix tables, not stored documents.
What I did
I built VersionKit around declarative [SchemaVersion] and [PropertyVersion] attributes that a startup scanner compiles into step-by-step migration pipelines - renames, moves, defaults, removals and type changes - applied lazily on read with a __version watermark, plus a background backfill service that eagerly drains old data forward. An EF Core layer adds a table-per-version physical model: archive tables, a registry, optimistic-concurrency draining and a generated UNION view for cross-version queries.
Outcome
Old payloads read as current-version entities with no hand-written per-transition code, and an escape hatch keeps complex steps possible.
Authored a .NET library that intercepts deletions and stores immutable archive snapshots with TTL policies and cascade archiving.
C#.NET 10EF CorePostgreSQLjsonb.NET Aspire
Read the case study
Context
Hard deletes destroy the audit trail and soft deletes clutter live tables forever. Teams keep re-implementing the same archive-on-delete plumbing, entity by entity.
What I did
I built ArchiveKit on an EF Core SaveChanges interceptor that spots soft-deleted entities in the change tracker, copies them into typed archive tables plus a schema-agnostic jsonb payload without a single extra database read, then flips the original to a physical delete in the same batch. Related rows share a correlation id so a background service reassembles full parent-child snapshots after the source rows are gone; TTL policies expire archives on schedule, and the services expose serverless entry points for Lambda-style hosts.
Outcome
Deletions become immutable, queryable archive snapshots with configurable metadata, retention and cascade behaviour - opt-in per entity via a single attribute.
Dozens of teams needed to stand up Azure services - App Service, Functions, APIM, AKS, Cosmos DB, Event Hubs, Front Door, SQL MI and more - without each reinventing modules, environments and pipelines.
What I did
I worked on a per-service library of self-contained Terraform stacks with a consistent five-file layout, workspace-indexed environment maps, and Azure DevOps pipelines that stitch together pinned module releases and externalised platform variables from separate repositories. Patterns include cross-subscription hub-spoke access via aliased providers, API Management as fully declarative API-as-code over OpenAPI specs and XML policies, and multi-phase SQL Managed Instance deploys that hand off from Terraform to PowerShell.
Outcome
A golden-module catalogue that scaled to a production estate of hundreds of Terraform-managed Azure deployments across regions and environments.
Prototyped an access-review tool that surfaces the data reviewers need to decide.
C#ASP.NET MVCWindows ServicesSQL Server
Read the case study
Context
Access reviews needed to be automated, giving reviewers the information to decide whether a user should keep access.
What I did
I researched and built a working prototype with C#, ASP.NET MVC, Windows services and SQL Server, collecting user information and presenting it through a UI that supports informed access decisions.
R&D
AI to BS
Built a smart PDF-form prototype that prefills from prior data and generates completed forms.
C#ASP.NET MVCMongoDB
Read the case study
Context
Users needed a faster way to fill out PDFs, reusing information they had already provided.
What I did
I built a prototype web interface that collects information into MongoDB against a user, prefills fields from previous matching data, and generates a completed form on submission.
R&D
AI Signtropreter
Prototyped a sign-language interpreter using Custom Vision and text-to-speech.
C#ASP.NET Web APIAzure Cognitive ServicesCustom Vision
Read the case study
Context
An exploratory project to interpret sign language and communicate it as text and speech.
What I did
Using C# and ASP.NET Web API with Azure Cognitive Services, I trained Custom Vision to recognise and label sign images, then used the labels and confidence scores to predict the intended sentence, producing both textual and spoken output via Azure text-to-speech.
02/02
Certification
I'm not aiming for an Award.
Whenever you want to achieve something, keep your eyes open, concentrate and make
sure you know exactly what it is you want. To accomplish great things we must not
only act, but also dream, not only plan, but also believe.
Operationalising machine learning on AWS: preparing data and engineering features; building, training, tuning, deploying and monitoring models in production; and applying MLOps, automation, model governance, security and cost control, centred on Amazon SageMaker.
AWS Certified Data Engineer – Associate
Data pipelines & analytics
June 2026About this certification
Building and operating data pipelines on AWS: ingesting, transforming and orchestrating batch and streaming data; designing and managing data stores; cataloguing, governance and security; and optimising data for analytics with services such as Glue, Kinesis, Redshift, Athena and Lake Formation.
AWS Certified Solutions Architect – Associate
Well-Architected solution design
February 2026About this certification
Designing and deploying well-architected solutions on AWS: resilient, high-performing, secure and cost-optimised architectures across compute, storage, networking and databases, applying the AWS Well-Architected Framework to turn business requirements into systems that scale.
Microsoft Certified: Azure Solutions Architect Expert
Azure Solutions Architect Expert
July 2021About this certification
Expertise crafting cloud and hybrid solutions on Azure across Compute, Network, Storage, Monitoring and Security, advising stakeholders and translating business requirements into solutions aligned with the Azure Well-Architected Framework, then implementing them alongside Developers, Administrators, Security and Data Engineers.
Microsoft Certified: DevOps Engineer Expert
DevOps Engineer Expert
February 2022About this certification
Bridging development and operations to enable continuous delivery: collaboration, code management, infrastructure provisioning, source control, security, compliance, CI, testing, delivery, monitoring and feedback, with a strong focus on Terraform, Azure DevOps and GitHub.
Microsoft Certified: Azure Developer Associate
Azure Developer Associate
May 2021About this certification
Responsible across all stages of development (requirements, design, deployment, security, maintenance, performance tuning and monitoring), spanning SDKs, storage, data connections, APIs, app auth, container deployment and debugging.
Microsoft Certified Solution Associate
Web Applications
September 2017About this certification
Professional developer using Visual Studio and ASP.NET (incl. .NET Core) to architect web solutions: designing and developing ASP.NET MVC applications, planning user-interaction solutions and deploying to multi-tier environments including Azure.
Microsoft Certified Professional
Programming in C#
CertifiedAbout this certification
Writing applications in C#: managing program flow, events and asynchronous processing; creating and using types, encapsulation and inheritance; debugging, validating input, encryption and diagnostics; and implementing data access with collections, LINQ, files, serialization and databases.
Microsoft Certified Professional
Querying Data with Transact-SQL
January 2018About this certification
Managing data with Transact-SQL: SELECT queries, joins, functions and aggregation, data modification, subqueries, APPLY, table expressions, pivoting, temporal and non-relational data, plus stored procedures, functions, triggers, views, error handling and transactions.
Microsoft Technology Associate
Software Development Fundamentals
December 2016About this certification
Core programming principles: storage and data types, decision structures, repetition and error handling; object-oriented concepts; application life cycle; algorithms and data structures; web, desktop and database application fundamentals.
Claude Certified Architect – Foundations
Building production applications with Claude
In preparationAbout this certification
Architecting production applications on Claude: where the model fits in a system and what it can and cannot do, prompt and context design, reliable integration through the Claude API, evaluation, and the guardrails that make a deployment safe to run.
Claude Certified Architect – Professional
Enterprise-scale Claude deployments
In preparationAbout this certification
Designing and leading enterprise-scale Claude deployments: solution and integration architecture, context engineering, evaluation and optimisation at scale, and AI governance, risk management and responsible deployment practices across stakeholders.
02/02
Build Log
From the build log.
Notes on cloud & data architecture, .NET engineering and the practice of shipping software.
A chat window bolted onto a product is not an AI strategy, and neither is an assistant licence mandated for developers - the case for adoption with intent, and the staged-maturity evidence behind it.
The diagnosis came back genuine and the repository is empty - now the discipline the old system used to impose for free must be rebuilt by hand. Greenfield delivery as three questions (decide, prove, ship) and the gates an AI-assisted team still owes itself.
Teams ask for a rewrite as though greenfield were a reward for enduring the old codebase - it is a diagnosis with a test attached, and misdiagnosis is how rewrites fail. Part 1 of 2 on choosing the field you build on.