I build reliable AI products across research, healthcare, education and agent workflows,
from model integration to typed front ends, data stores, deployment and QA.
Full-stack engineer with two years of applied experience pairing production
React/TypeScript front-ends with Python AI services in real shipping products. I
write code that other people maintain, document the workflows so non-engineers can run
them, and use AI tooling daily as part of the work rather than as a side project.
Day-to-day I work in Next.js 15, React 19, TypeScript and Tailwind on the front; FastAPI,
Node.js, Postgres + pgvector, Redis and BullMQ on the back; and OpenAI, Gemini,
LangChain and MCP servers when the product needs intelligence. Auth with Supabase
(Google OAuth, magic link, PKCE), shipping on Vercel and GCP Cloud Run.
Recent builds include MedReviewAI for grounded medical literature review and ScholarAI
for in-browser research-paper analysis.
I default to written specifications before code, runbooks alongside features, and
reviews that move the codebase forward — easier to work in than I found it.
Experience
Where I've shipped.
Apr 2026 – May 2026Remote, UK
AI Engineer (Full-Stack) · Meta Solution Technologies
Built an AI-guided admissions platform on Next.js 15 +
React 19 + TypeScript + Tailwind, talking to a Python LLM service over a typed
REST API. Chat-style guidance flow runs on OpenAI with structured outputs and a
Postgres + pgvector knowledge store.
Wrote auth end-to-end (Google OAuth, magic-link, PKCE) on Supabase, plus a
BullMQ + Redis job queue that drives async generation, document checks and
email triggers.
Shipped 10-language i18n and a dual-theme CSS layer so non-engineering
teammates could roll out copy and translation updates without involving me.
Used Claude Code daily for refactors and review.
Next.js 15
React 19
TypeScript
Tailwind
Python
OpenAI
Postgres
pgvector
Supabase
BullMQ
Redis
Jan 2026 – Apr 2026Remote
Software Engineer (Part-time) · Recruit Pilot — Chris Hines (Recruitment-Tech)
Built React + TypeScript UI features against a REST API for a recruitment-tech
product. Took part in code review and weekly sprint cadence alongside more
senior engineers.
React
TypeScript
REST APIs
Code review
May 2024 – Jan 2026Remote
AI Engineer (Freelance) · Self-Employed
Shipped 20+ AI-powered apps for paying clients across SaaS,
e-commerce and consulting — most had a React or Next.js front end on top of a
Python service running Claude or OpenAI APIs with structured outputs and a RAG
retrieval layer.
Built five longer-running AI agents (lead-gen, customer support, data
processing). Each project ended with a README, a short walkthrough video and a
written hand-off doc so the client team could run the workflow without me.
Built React UI features on a learner-facing app serving thousands of users —
components for lessons, progression and learner dashboards, integrated against
a REST API. Code review, agile delivery, shared QA cycles.
React
JavaScript
REST APIs
Agile
Selected work
Things I've built and maintain.
A small, public set of systems I designed end-to-end — front end,
backend, model layer, deployment. Each thumbnail links to the running version.
Graph-native security for agents that run on persistent memory. A single poisoned memory in a vector store or RAG index can silently override an agent's policy on every future run, and prompt firewalls cannot see it because the poison is in what the agent retrieves, not the prompt. HydraSentry replays the agent on clean versus poisoned context, scores the behaviour diff, traces the exact taint path through the real HydraDB query_paths graph, blocks the unsafe action via an MCP firewall before the agent acts, and seals each incident into a signed, offline-verifiable Memory Integrity Certificate. Multi-tenant on Supabase Postgres, semantic paraphrase detection via embeddings, and a self-verifying OWASP Agentic Top 10 map. Live with no login.
Featured · Offline robot design and simulation · Three.js · Self-refining
Kodro, offline robot design and simulation studio
A desktop studio for the loop design a robot, program it, watch it work, running entirely offline with no account and no cloud. You assemble a custom robot in the Robot Lab (board, sensors, actuators, chassis) and Kodro derives its mass, speed and runtime. You program it three ways: a Python subset interpreter, a blocks editor that compiles to the same Python, or an optional local AI assistant (Ollama, with a deterministic rule-based fallback). Then it validates the behaviour in a 3D world chosen to fit it: a self-driving car gets the City with looping one-way traffic, pedestrians and a crossing; a home or arm robot gets a furnished Room; a rover gets planetary terrain. Movement reads per type, with weight transfer, banking and suspension rather than sliding props. A localStorage memory layer reflects on each run and keeps saved skills, so the studio refines from your own verified work (system level, no model retraining). Built with vendored React and Three.js, pre-compiled to a single offline bundle. Verified: 21 of 21 interpreter QA and 851 engine tests at ~86% coverage.
Featured · Local-first desktop AI · Ollama · Electron
Own Wiki — local-first knowledge OS
A desktop second brain that turns your notes, documents and conversations into a private, searchable, self-organising knowledge base — powered entirely by a local LLM, no cloud or API key required. RAG chat answers from your own vault with inline citations; a 3D knowledge galaxy (react-force-graph + three.js, with bloom) lets you fly through how everything connects; a multi-agent swarm researches a topic in parallel and synthesises one cited wiki page; and it auto-indexes your Desktop / Documents / Downloads so you can ask about a file with zero manual import. Long-term memory extracts atomic facts after each chat. Embeddings live in a custom int8-quantised vector store (~4× smaller on disk, <1% cosine error, zero native deps). Ships as one portable Windows .exe; optional Groq / Gemini / OpenRouter fallback for heavier models. Hardened end-to-end — SSRF guard, CSRF, MCP command allowlist, path-traversal checks, strict CSP.
Featured · Multi-agent AI · Live StockX data · Installable PWA
DRIP — AI Sneaker Stylist
An AI styling companion that builds outfits around your sneaker collection — "Nike SNKRS meets a personal stylist." A multi-agent LLM stylist (a Stylist agent drafts, a Critic agent refines) gives honest, weather- and material-aware advice: it will tell you not to wear suede in the rain instead of hyping every pick. Live StockX resale prices, buy links and product images stream in per shoe via KicksDB, and search hits the entire real catalog — not a static list. A camera scanner extracts dominant colours with k-means and auto-captures when you hold a shoe steady, then an AI writes the fit verdict. Underneath: a real content-based recommendation engine (taste vectors + MMR diversity), a weather-aware outfit engine grounded in colour theory, a live community feed (Reddit + YouTube + sneaker news), a saved-fit lookbook, voice stylist, multi-currency shop and an honest hype score. Fully functional with zero API keys; keys progressively light up live AI and data. Installable PWA, mobile-first.
Featured · Agents You Love Hackathon · Best Use of Memory
Continuity
Most AI agents have amnesia: close the tab or switch tools and you start over. Continuity is a personal memory agent that behaves like a person's memory. It reinforces what you use, lets what you ignore decay, rewrites itself when you contradict yourself, and closes your open loops before you ask. HydraDB is the primary memory layer: every fact is a real write and every recall a real query, so your context survives a reload and a new session with nothing in localStorage. Tell it a doctor wants to prescribe amoxicillin and it recalls your stored penicillin allergy and warns you, the answer changing because of what it remembered. A live knowledge graph and an open-loop tracker are reconstructed from HydraDB, the agent drafts a context-aware follow-up that you approve before it sends, and an execution-log dock traces every write and query with request IDs and latency. One memory across three surfaces: a web app, an MCP server so the same memory follows you between Claude Code, Codex, Cursor and Gemini CLI, and a 24/7 daemon that drafts your follow-ups.
Featured · Google Cloud Rapid Agent Hackathon · MongoDB track
Recoup
Budgeting apps show you where your money went. Recoup gets it back. One Google sign-in scans your real Gmail receipts read-only and lands you in a command center with your actual subscriptions already on screen, in their real currencies, no bank login anywhere. Then a fleet of agents goes to work: it scans your money surface, grounds every claim in real consumer-protection law through MongoDB Atlas Vector Search, drafts each claim with Gemini 3 through the Google Agent Development Kit, runs an independent verifier that flags what you might not qualify for instead of hiding it, and then stops dead at a human approval gate. One approval and the execution agent takes over: a real headless Chromium driven by Playwright walks the vendor cancellation portal and streams a live screenshot back into the card, honest about the login wall where your own final click belongs. A Sentinel watches your drains on a schedule and asks before it acts. It also searches twenty thousand real California State Controller unclaimed-property records worth 37.8 million dollars, claimable on the official state site. Every step writes to a tamper-evident sha256 hash chain. The model never invents a number, and nothing acts without you.
Featured · Google Cloud Rapid Agent Hackathon · Fivetran track
RecallOps Cortex
My entry for the Google Cloud Rapid Agent Hackathon (Fivetran track). It pulls a real openFDA Class I food recall, then scopes it across Fivetran-synced BigQuery operational data into a live blast radius: affected locations, lot codes, inventory units, units already sold, in-transit shipments, and the consented customer notification list. Gemini then drafts six containment actions (stop-sale, shelf-pull, supplier-hold, customer-notice, replacement-PO, compliance-report), each one citing the evidence it used. Nothing executes on its own. A human approves every action, and each approval is written to an append-only sha256 hash-chain audit log that a verifier can prove is intact. FastAPI on Cloud Run behind a 14-route command center, with honest live vs fallback badging on every integration so nothing shows a green light unless it is real.
Featured · Wikithon '26 Finalist · Personal Knowledge OS
Qyntra — Personal Knowledge OS
Wikithon '26 finalist. A private Wikipedia compiled from your own files. Connect Notion, Google Drive, Gmail, GitHub or a desktop folder; Qyntra ingests every supported file (markdown, PDF, DOCX, code, email bodies, Notion blocks, READMEs) into one searchable corpus on Supabase. Ask a question and Groq Llama 3.3 70B answers with numbered citations back to the exact file it pulled from — no hallucination, every claim clickable. A react-three-fiber 3D galaxy lays out every file as a star, clustered by type, with bezier knowledge-graph edges. WEB mode falls back to live DuckDuckGo search; DEEP mode reframes the query as a three-step research pass. Custom Groq API key support, ember-themed scrollbar, sticky chat input, and a Contra-inspired Q-soldier logo. Built solo in about a day with OpenCode Go and Claude Opus 4.7 between exam revision sessions.
Featured · Agents Under Pressure '26 · Browser-OS for multi-agent work
DelOS — agents that flow under pressure
Agents Under Pressure '26 hackathon entry. A browser-OS where multi-agent orchestration is wired in by default — Memory, Tools, Recovery and Adaptation as first-class primitives. Agents build the apps live. Real xterm.js terminal panes drive an Agent Fleet of parallel agents, each on an isolated HydraDB tenant subnamespace (the serverless answer to git worktrees). A 6-provider LLM cascade (Groq + Mistral + Gemini + NIM + Cerebras + Bytez + OpenRouter) keeps the OS responsive when any single provider rate-limits. Memory Browser renders a force-directed knowledge graph over HydraDB graph+vector storage with a 3-tier write-guard. SSE streams every phase — plan, tool calls, recoveries, usage — into the terminal so you watch the agent think. 79 endpoints, 14/14 regression pass, 0 console errors. Built solo across a 48-hour sprint.
Locked-prompt evaluator that grades free-form student answers against a rubric, returns
a 0–3 score with a short explanation, and tracks concept mastery across sessions
(weak → shaky → solid → mastered). Single-prompt design — no agent loop, no retrieval —
keeps median latency under one second on Groq Llama 3.3 70B with a Pollinations
fallback for cost. Edge runtime, strict-typed Next.js 16, KaTeX rendering for
mathematical answers.
AI-powered medical literature review platform that searches 13 free academic sources,
extracts PICO fields, and keeps generated claims tied to verbatim source evidence.
Built with Groq Llama 3.3 70B, Clerk JWT auth and Neon Postgres on Vercel as part of
an 8-person student team.
Chrome extension that turns research papers into interactive AI sessions. It summarizes
methodology, extracts key claims, supports Q&A over the paper, and helps researchers
evaluate credibility faster without replacing human judgment.
A searchable registry of Model Context Protocol servers — the emerging plug-in
standard for agent toolchains. Pulls from Glama and the official MCP repository on a
daily schedule, normalises tool schemas, and renders one-line install snippets for
Claude Desktop, Cursor and Claude Code. Built on Next.js 15 RSC with MIT-licensed
source.
A side project I built mostly on my phone the evening after watching the horror film Obsession. Search any movie and the whole page regenerates in a cinematic style: real TMDB poster, cast and trailers, with the site auto-theming to the film's own colours (Inception turns red, The Matrix turns green) via client-side canvas extraction. An LLM (Groq gpt-oss-120b) reads each film and writes scene-anchored fan theories you can vote on, behind an airtight spoiler gate that serves the ending from a separate noindex endpoint. One static HTML file plus a few Vercel serverless functions — per-movie SSR, generated Movie JSON-LD and a per-request nonce CSP. Just for fun.
Public recognitions and competitions where my work made a measurable mark.
Jun 2026 · HydraDB Build Blitz · Winner
HydraDB Build Blitz · Winner
Won HydraDB's Build Blitz with HydraSentry, a graph-native memory-integrity layer for AI agents, judged on a live demo and an architecture deep-dive across a two-night build. It replays an agent on clean versus poisoned context, traces the exact taint path through the real HydraDB query_paths graph, blocks the unsafe action via an MCP firewall before the agent acts, and seals each incident into a signed, offline-verifiable Memory Integrity Certificate. Shipped live, multi-tenant, with no login.
Hack HydraDB · Security Research · Top 3 Submission
Placed in the top three of 20+ submissions in HydraDB's authorised security hackathon, judged on real-world impact, reproducibility, and how directly each issue touched core isolation and data-privacy guarantees. My report surfaced an authentication and credential-handling weakness in the platform — a flaw by which protected secrets could be reached without proper authorisation. Submitted through coordinated, responsible disclosure and acknowledged by the maintainers as driving fixes on their side. Technical specifics, payloads, and affected endpoints are withheld under responsible disclosure.
Security research
Responsible disclosure
HydraDB
Top 3 of 20+
Auth & credential security
Full technical write-up withheld under coordinated disclosure.
May 2026 · Hackathon · Finalist
Wikithon '26 Finalist · AIValley · HydraDB
Selected as a finalist out of the global Wikithon '26 cohort run by AIValley and HydraDB. My entry, Qyntra, was built solo in about a day between exam revision sessions: a private Wikipedia compiled from a user's own Notion, Drive, Gmail, GitHub and desktop files with grounded LLM Q&A, a 3D galaxy knowledge graph, and live web search fallback. Recognised for end-to-end execution, citation grounding, and the breadth of source connectors shipped in a single sprint.
Agents Under Pressure '26 · AIValley · HydraDB · DelOS
Built DelOS solo across a 48-hour sprint for the AIValley × HydraDB Agents Under Pressure hackathon — a browser-OS where Memory, Tools, Recovery and Adaptation are first-class primitives. Real xterm.js terminal Agent Fleet driving parallel agents on isolated HydraDB tenant subnamespaces, 6-provider LLM cascade for transparent fault-injection, force-directed memory graph over graph+vector storage, 79 endpoints with 14/14 regression pass and 62/62 brutal probe pass live. Recognised for ambitious end-to-end execution under hackathon pressure.
NEXUS Research Paper · DOI 10.5281/zenodo.20059414
Authored an open-access preprint on closing the residual ~50 ms latency gap between cloud gaming and local wired console play. The system combines on-controller transformer inference, a direct 6 GHz Wi-Fi link with OFDMA priority scheduling, and a cloud-side speculative renderer with bounded mispredict recovery. Indexed on Zenodo with a Crossref DOI and mirrored on ResearchGate.
Synced from LinkedIn after OAuth credentials are configured.
Research
Publications.
Preprints and papers I've authored. Each links to the open-access PDF, ResearchGate record, and DOI record.
Preprint · May 2026 · Cloud Gaming · Edge AI
NEXUS: On-Controller Transformer Inference and Speculative Edge Execution for Console-Wired Latency Parity in Cloud Gaming
A system that closes the residual ~50 ms latency gap between cloud gaming and local wired console play by combining three mechanisms: a 3–8M-parameter distilled decoder-only transformer running on the controller (producing a semantically compressed input stream and a probabilistic short-horizon prediction of player intent), a direct 6 GHz Wi-Fi link with OFDMA priority scheduling that bypasses the host's USB/Bluetooth stack, and a cloud-side speculation engine that renders one round-trip ahead with a state-machine recovery protocol bounding the visual cost of mispredictions to one to two frames.