🧱

Platform & Systems Engineer

Automation, Internal Tooling, Data Platforms

"Eliminate toil. Standardise workflows. Build durable abstractions."

architecture automation multidisciplinary builder developer tooling internal platforms

What I Do

Automate ☠️

Replace manual, fragile processes with pipelines and services.

Platform 📦

Tooling and infrastructure that scales teams and workflows.

Abstract 🖤

Convert recurring patterns into repeatable systems.

Observe

Measure, log, and make invisible complexity visible.

Own 🧰

Take ownership of the stack from concept to production.

Modes

solo conception → design → product architect then automate horizontal generalist own the whole stack firefighting & chaos-compatible open-source tinkerer extensibility-first design build fast, break fast, iterate

Highlights

Reddit CLI Dashboard
Reddit CLI Dashboard
Read-only Reddit from the terminal
Yarn & Moggy
Yarn & Moggy
Custom AWS e-commerce stack for £0.03/month
Juggling Analytics & Practice
Juggling Analytics & Practice
Mastering juggling patterns in practice
Head Brewer
Head Brewer
Our award winning ESB Reverence from my former life as a Head Brewer
Cat Owner
Cat Owner
Frankie the cat
🔍 Click images to zoom (or unzoom)

Selected Systems

PLATFORMS & TOOLING INTERNAL: TRUE

Document Generation Service

Problem: Legacy TypeScript document generation service was poorly written, unmaintainable, and difficult to extend for new document types.

Solution: Rewrote the service in Python (FastAPI, Jinja2, WeasyPrint) with Pydantic-validated models, modular templating via Jinja2 extends/includes, and custom brand CSS. Deployed as a Docker container on AWS Lambda via CDK.

python fastapi jinja2 weasyprint pydantic docker aws-lambda aws-cdk
Outcome: Clean, maintainable service replacing a fragile legacy codebase; consistent branded PDF output; html output for previews; extensible template system for new document types.
DATA & COMPUTE INTERNAL: TRUE

Lead Generation Scraping Pipeline

Problem: Sales team had no scalable way to identify and qualify leads; prospecting was manual and time-consuming, many phone numbers were disconnected.

Solution: Automated web scraping pipeline to extract, normalise and enrich lead data, feeding structured prospect information directly to the sales team.

python web-scraping aws data-pipelines
Outcome: Directly drove sales pipeline value; replaced manual prospecting; delivered structured, actionable lead data at scale.
PROFESSIONAL SERVICES INTERNAL: FALSE

Yarn & Moggy E-Commerce Platform

Problem: Off-the-shelf e-commerce SaaS (Shopify) cost £25+/month — unjustifiable for a small handmade goods shop.

Solution: Built a fully custom e-commerce platform on AWS: static GitHub Pages frontend with Jinja2 templating, FastAPI backend on Lambda, DynamoDB for orders, S3 for assets, Stripe for payments, Resend for transactional email. Infrastructure managed with AWS CDK.

python fastapi aws-lambda dynamodb s3 stripe aws-cdk jinja2 github-pages SQS
Outcome: Replaced £25/month SaaS with a cloud stack costing pennies per month. Full order management, payment processing, and transactional email — purpose-built and owned end to end.
OPEN SOURCE & SIDE PROJECTS INTERNAL: FALSE

Reddit CLI Dashboard

Problem: Wanted intentional, low-noise access to Reddit without the engagement-maximising web UI.

Solution: Read-only terminal dashboard built with Textual. Parses Reddit's JSON Feeds and renders a navigable TUI with feeds, post browsing and comment threads.

python textual tui reddit-api json
Outcome: Clean, distraction-free Reddit access from the terminal; no tracking, no ads, no algorithmic feed manipulation.
DATA & COMPUTE INTERNAL: FALSE

JobLens - Automation Pipeline

Problem: Manual job search and triage was slow and unscalable.

Solution: Scraping, normalisation, NLP scoring, LLM summarisation and automated ranking pipeline.

python llm scraping cron sklearn openai-api json
Outcome: Fully automated job search; converted unstructured job postings into structured data; reduced human workload to decision-making only.
OPEN SOURCE & SIDE PROJECTS INTERNAL: FALSE

The Zote API

Problem: Wanted a personal API to experiment and demonstrate working knowledge of Java.

Solution: Built a Spring Boot API with Infrastructure as Code (Pulumi), CI/CD pipelines, and cloud-native deployment on Google Cloud.

java maven spring-boot pulumi cloud-run cloud-sql ci/cd gcp
Outcome: RESTful API to share the grandeur of Zote the Mighty from Hollow Knight; shows Java, cloud deployment, and IaC skills; portfolio showcase.
COMPUTATIONAL CURIOSITIES INTERNAL: FALSE

Juggling Analytics & Practice System

Problem: Juggling progress hard to quantify; avoided difficult patterns; wanted structured practice and progress tracking.

Solution: Weighted random practice generator, archival system and analytics.

python pandas csv yaml
Outcome: Improved consistency in advanced patterns (552, 5-ball cascade); historical tracking & analytics.

History

Green Energy Advice Bureau (GEAB)

Full Stack Developer — Remote / Sunderland (February 2026 – Present)

  • 🡆 Document generation services
  • 🡆 Lead generation & data pipelines
  • 🡆 Full stack web development
  • • Rewrote legacy TypeScript document generation service in Python (FastAPI, Jinja2, WeasyPrint); deployed via Docker on AWS Lambda with CDK
  • • Built web scraping pipeline to generate structured lead data, directly driving sales pipeline value
  • • Frontend development on React/TypeScript codebase
  • Python FastAPI Jinja2 WeasyPrint Pydantic Docker AWS Lambda AWS CDK React TypeScript Web Scraping

    Blueskeye AI

    Data Ops Engineer — Nottingham, United Kingdom (January 2024 – December 2025)

    • 🡆 End-to-end data infrastructure
    • 🡆 Annotation systems
    • 🡆 Offline AV capture
    • 🡆 Automation & CI/CD
  • • Re-architected internal annotation platform; reduced tool deployment time from days to hours
  • • Migrated Firestore to PostgreSQL; enabled reliable handling of millions of annotation points
  • • Designed modular Python data processing library standardising data lifecycle
  • • Built high-performance annotation interfaces, reducing annotation time by ~50%
  • • Engineered robust offline multi-camera AV capture platform for field studies
  • • Implemented CI/CD, YAML-driven pipelines, and closed-loop automation
  • Python SQL FastAPI NiceGUI Flask PostgreSQL Cloud Storage Cloud SQL GCP Linux FFmpeg OpenCV Shell Scripting Multiprocessing CI/CD / GitHub Actions Automation Pygame

    Le Wagon

    Teaching Assistant — Remote (January 2024 – July 2025)

    • 🡆 Python & SQL mentorship
    • 🡆 Data Science bootcamp teaching
    • 🡆 Debugging & architecture guidance
  • • Delivered multiple Python course iterations to new developers
  • • Led modular architecture sessions
  • • Reinforced best practices in code quality, workflow design, and problem solving
  • Python SQL Tensorflow SKLearn Numpy Pandas

    Date & Game

    Development Team Lead — Remote (April 2021 – May 2023)

    • 🡆 Multiplayer games
    • 🡆 API integration
    • 🡆 Distributed systems
  • • Shipped six multiplayer games integrated with company API
  • • Built reusable multiplayer framework for rapid iteration
  • • Solved reconnection, resynchronisation and deterministic identity challenges
  • • Onboarded new developers and ported API integration to Unity
  • GameMaker Networking Distributed Systems Concepts Socket.io

    Self-Employed / Matlock Brewing Company Ltd

    Indie Game Developer / Head Brewer — Remote / Matlock, United Kingdom (March 2015 – January 2024)

    • 🡆 Independent games & interactive experiences
    • 🡆 Brewing operations & product development
  • • Developed 'Other Minds', a multi-year game project with eight worlds and emergent AI gameplay
  • • Awarded Frontpage on Newgrounds with 'A Relaxing Typing Game'; featured in Indiepocalypse Zine
  • • Designed and brewed award-winning beers including 'Reverence' ESB at Matlock Brewing Company
  • • Built Excel/VBA tooling for cask tracking, till management and sales analytics
  • GameMaker Studio 2 OpenGL Systems Architecture Brewing techniques Excel & VBA