Work

Projects, sprints, and end-to-end builds.

A selection of recent engagements — each entry summarises the core problem, the architecture, and the technology stack used to deliver it.

  • Airbus / Local Resilience Forum Sprint

    Directed 12 researchers to deliver a situational awareness pilot for emergency responders inside a one-month sprint supporting a multi-million-pound grant bid.

    Core problem

    Local Resilience Forums needed a way to fuse static hazard data with live, on-the-ground signal during incidents — fast enough to be useful and credible enough to underpin a major grant application.

    Architecture

    Architected a dashboard integrating spatial risk-ratings for waste and fire hazards with ML-driven change-detection on satellite imagery. Engineered a real-time social media scraping pipeline to ingest, parse, and rank the severity of localised hazard reports during crisis events. Coordinated a cross-functional team of 12 across data, ML, and front-end roles.

    • Python
    • ML
    • GIS
    • Real-time Pipelines
    • Change Detection
  • Knight Frank Challenge — Grey Belt Classification

    Led a 20-person PhD cohort delivering a national housing submarket classification project for Knight Frank, using semantic segmentation on satellite imagery.

    Core problem

    Identifying Grey Belt land at national scale requires fine-grained classification of land use that is not captured in existing administrative datasets. Knight Frank needed a defensible, reproducible pipeline that could be rerun as imagery refreshed.

    Architecture

    Engineered a semantic segmentation pipeline using GEOSAM to process high-resolution SPOT/Pléiades satellite imagery for granular Grey Belt land identification. Managed GCP and Google Workspace cloud environments for the cohort, standardising shared infrastructure so the team could focus on modelling rather than ops. Delivered the final technical presentation directly to Knight Frank stakeholders.

    • GEOSAM
    • GCP
    • Python
    • Remote Sensing
    • Semantic Segmentation
  • NOVA Digital Twin

    Technical lead on a scenario-based digital twin for the UK Department for Business and Trade, scoring polygon suitability for renewables siting.

    Core problem

    Policy teams needed a way to interrogate renewables siting decisions against multiple, weighted criteria — without waiting on bespoke GIS analysis. Decisions were being made on static maps that could not be re-scored when inputs or policies changed.

    Architecture

    Architected a Multi-Criteria Evaluation engine inside a Node.js backend, with Turf.js spatial analysis powering on-the-fly polygon scoring. Built interactive React components that let users drop wind turbines and solar panels onto maps and see real-time estimated capacity. Automated reporting integrated React components inside Reveal.js presentations, removing the manual hand-off between analysts and policy authors.

    • Node.js
    • React
    • TypeScript
    • Turf.js
    • Reveal.js
    • GIS
  • Open Banking Financial Dashboard

    Zero-to-one TypeScript monorepo ingesting a decade of transaction history across 10+ banks, with WebAuthn 2FA and an LLM advisory layer in flight.

    Core problem

    Personal finance dashboards either flatten data into shallow summaries or stop at recent transactions. The goal: ingest 10+ years of historical transaction data across 10+ banking institutions and ground a future LLM advisory layer on that long-tail history — securely.

    Architecture

    TypeScript monorepo with a NestJS API, a React/Vite frontend using MUI X Charts, and strict shared data contracts via PostgreSQL/Prisma. Secured a restricted Plaid Production Licence to enable historical ingestion. Implemented WebAuthn (Passkey) 2FA, JWT guards, rate-limiting, and encryption-at-rest. The LLM integration layer for personalised financial advice is currently being architected on top of this foundation.

    • TypeScript
    • NestJS
    • React
    • Vite
    • PostgreSQL
    • Prisma
    • WebAuthn
    • JWT
    • Plaid