I build AI agents that work from real data, not vibes.
About
I'm a Staff Engineer at NquiringMinds, working where AI agents, MCP and
databases meet. Most days that means building MCP servers and clients that let LLMs call
real tools and query real databases, designing event-driven agent pipelines that hand work from one
stage to the next, and putting it all behind interfaces people actually want to use. My agents get
exactly the permissions they need, which is usually fewer than they ask for.
Behind every confident LLM answer there should be a well-indexed table, so I spend a lot of time on
the data side: ETL pipelines loading millions of records into PostgreSQL, parallel
and idempotent ingestion, and messy public datasets turned into clean schemas, with enough XBRL
parsing along the way to have opinions about accountants.
Lately that has included defence work: multi-agent simulations and AI
decision-support tools where every recommendation has to show its evidence. Before that I worked on IoT security (device onboarding, SBOMs and vulnerability
detection), and researched emotion-aware text-to-speech at the University of Surrey.
I like it when software meets hardware, too. I built a Holybro X650 quadcopter
with a Raspberry Pi on top that sends it commands, wrote my own tool to read and debug its ESCs,
and taught myself FreeCAD to design and 3D-print the parts it needed.
I'm usually the one who reads the 200-page spec so the rest of the team doesn't have to. Away from
the keyboard you'll find me hiking, swimming, playing pool, spending time with my family, or
starting yet another Raspberry Pi project.
MCP tools over PostgreSQL
30
research outputs in one database
2.6M
commits since 2023
1,800+
papers on arXiv
3
Projects
Selected work from the last few years. Most of it lives in private repositories, so not every project
has public code to link to.
AI agents & MCP · Data & databases2025–26
Company-intelligence MCP server
An MCP server that lets LLMs investigate UK organisations through 30 tools backed by PostgreSQL: ownership chains and ultimate owners, persons with significant control, filed financials, research grants, charities and public-sector contracts.
Runs over stdio for local agents and streamable HTTP for many AI clients at once
Graph-style tools trace circular ownership and research-collaboration networks
Typed tool inputs (Zod schemas), so the model knows exactly what each tool accepts
TypeScript
MCP SDK
PostgreSQL
Zod
Express
Private codebase
AI agents & MCP2026
MCP chat client for React
A drop-in React chat component and Node backend that connects any web app to an MCP server. The model streams its answer and calls MCP tools as it goes, so adding an AI assistant to an app takes a few lines.
Streaming responses with tool calls and conversation management
Next.js route helpers and themeable styles via CSS variables
Python ETL that downloads Companies House's monthly accounts archives and loads every XBRL and iXBRL fact into PostgreSQL, alongside company masterdata, persons with significant control, UK public contracts and the Charity Commission register.
Parallel, multi-process ingestion with a live ETA and adaptive resource use
Idempotent by design, with files de-duplicated by SHA-256, so it is safe to stop and re-run
Schema built around PostgreSQL's limits, e.g. hash-based uniqueness for oversized values
Python
PostgreSQL
psycopg 3
XBRL
ETL
Private codebase
Data & databases2025
UKRI research-grants harvester
Harvests the UKRI Gateway to Research API into a normalised PostgreSQL schema with full referential integrity, while staying within the API's rate limits.
research projects
171k
research outputs
2.6M
funding tracked
£70bn
tables
18
Python
PostgreSQL
REST APIs
Data modelling
Private codebase
Data & databases2025
Company accounts comparison app
A Next.js app for comparing company accounts where the browser never touches the database. Queries travel over a peer-to-peer message bus to a worker next to PostgreSQL, which runs them and sends the results back.
Next.js
Node.js
PostgreSQL
tdx Volt
Private codebase
Defence · AI agents & MCP2026
Defence decision-support systems
Multi-agent simulations and AI-assisted decision-support tools for defence projects. I build event-driven agents that each own one stage of a process and hand work on to the next, and the interfaces people use to follow what the system is doing and why.
Every AI recommendation is shown next to the evidence behind it, with a full audit trail
Interactive and real-time views with replay, so any run can be reviewed step by step
Node.js
TypeScript
Java
Multi-agent
MapLibre GL
WebGL
Private codebase
Hardware & drones2026
Holybro X650 with a Raspberry Pi companion
Built a Holybro X650 quadcopter (Pixhawk 6X running PX4, AM32 ESCs) with a Raspberry Pi mounted on top as a companion computer. The Pi talks to the flight controller over serial MAVLink, so flights, missions and telemetry can be driven from code instead of only from a radio.
Set up and tuned the airframe, flight controller and ESCs with QGroundControl
Pi-to-Pixhawk serial link for MAVSDK commands, plus a Pi camera on board
Designed and 3D-printed the Pi mount myself (see the FreeCAD project)
PX4
Pixhawk 6X
MAVLink
MAVSDK
Raspberry Pi
QGroundControl
Private codebase
Hardware & drones2026
AM32 ESC flash-read and debug tool
My own command-line tool for checking drone ESCs. It speaks the BLHeli bootloader protocol through an Arduino acting as a USB-to-1-wire bridge, reads each ESC's firmware version and settings straight from flash, and writes a report comparing every ESC with the AM32 defaults and with the others.
Read-only by design (init, set-address and read-flash only), with a CRC-checked double read to confirm the chip and link are healthy
Reports flag the odd one out (timing, PWM, protections, motor direction) and keep hand-written notes when regenerated
Used with PX4 flight-log analysis to diagnose motor problems across all four ESCs
Python
pySerial
BLHeli protocol
AM32
Arduino
Embedded debugging
Private codebase
Hardware & drones2026
3D-printed drone parts designed in FreeCAD
I taught myself FreeCAD to design parts the drone needed, then printed them. Two-part Raspberry Pi 4 and Pi 5 mounts hold the companion computer on the X650's frame, and the parametric source files make them easy to adapt to new boards.
Raspberry Pi 5 mountRaspberry Pi 4 mount
FreeCAD
3D printing
Parametric CAD
STL
Private codebase
AI agents & MCP2026
Claude Code skills for the team
Reusable Claude Code skills that deploy Node and Python services behind nginx, TLS and PM2 with CI, and scaffold new apps from tested starter templates. New services start from a working baseline.
Claude Code
Agent skills
nginx
PM2
GitHub Actions
Private codebase
Security & IoT2023–25
Secure onboarding and offboarding of IoT devices
Certificate-based onboarding for IoT devices in place of pre-shared keys. I modified a FreeRADIUS server to onboard devices and revoke access for malicious ones, and built a C server and companion app on Raspberry Pi to demonstrate the full workflow.
A CLI that generates Software Bills of Materials and finds known vulnerabilities across binary firmware, Docker images and C/C++ and other projects. It led to two co-authored papers.
Turns spreadsheet content into a full website using YAML schemas and Docusaurus, with validation and formatting built in. Used by the Internet of Things Security Foundation (IoTSF) to publish its assurance framework.
My University of Surrey dissertation: an end-to-end, transformer-based TTS model with emotion embeddings. It analyses text for emotional cues and speaks with the matching tone, to make social media more accessible.
Leading the design and delivery of AI agent systems, MCP integrations and data platforms, from first design to production.
Built MCP servers exposing 30 tools over PostgreSQL, and a reusable React and Node MCP chat client published on npm.
Designed event-driven agent pipelines that turn long technical standards into running workflows, with each agent owning one stage.
Delivered AI-assisted decision-support tools for defence projects, with every recommendation shown next to its evidence.
Built ETL pipelines loading millions of records into PostgreSQL with parallel, idempotent ingestion and de-duplication.
{"Built and debugged drone hardware"=>"a Holybro X650 with a Raspberry Pi companion computer, my own ESC debug tool, and parts designed in FreeCAD and 3D-printed."}
Made the team faster with Claude Code skills, starter templates and standard deployment pipelines.