Software developer and Cambridge MBA. I turn ambiguous, real-world problems into working AI and enterprise software, often as the sole product owner and engineer.

My strength is moving from an ambiguous problem to something live and adopted: leading the discovery, making the technical calls, building the prototype, and staying close to users until it works.
Because I can write the code and design the evaluation myself, I work as a genuine peer to engineering and a translator for the business. Eight years across technology consulting, enterprise product, and AI engineering, much of it in compliance-heavy environments where every technical detail is scrutinised.

A feedback-intelligence tool that helps teams cut through large volumes of free-text feedback. Three parallel models classify, score, and route each item by sentiment, urgency, and theme in seconds, with embedding-based semantic deduplication on Cloudflare's edge. I also built a hand-labelled evaluation harness that benchmarked two LLM providers head to head and surfaced three model-lifecycle findings during one migration: two model deprecations and a silently changed response contract.
Stack · Cloudflare Workers AI · Vectorize (vector DB) · DistilBERT · Llama 3 · BGE embeddings · D1
A B2B augmented-reality menu platform for restaurants, taken from concept to a live demo in a single weekend. It covers the admin upload flow and a customer-facing menu with 3D dish rendering and mobile AR launch.
Stack · Next.js · TypeScript · Cloudflare Workers / D1 / R2 · model-viewer (AR)

A Cambridge Venture Project for the Centre for Global Equality. I combined census, deprivation, accessibility, and live transport (GTFS) data into a Transport Poverty Index and a Bus Frequency Score at neighbourhood (LSOA) level, then built an interactive heatmap of Lancashire. It shades each neighbourhood from soft yellow to deep red by how severely transport poverty affects it, so anyone can see which areas are hit hardest and zoom into the top-10 hotspots.
Stack · Python · pandas · GTFS transit data · IMD / census data · geospatial (LSOA) · interactive map
An AI wellness assistant for self-discovery and decision-framing. It guides people through structured, multi-step conversations to think through personal choices and reflect. I built it from scratch in Python on a hosted LLM API, using prompt and context engineering, and added automation that cut advisory turnaround time by 50%.
Stack · Python · hosted LLM API · prompt & context engineering
Client-facing technical advisory on real-world asset tokenization, including a privacy assessment and reusable, productised deliverables.
Founded and shipped an AI assistant from concept to 20+ active users, owning discovery, build, and iteration end to end.
Sole PM and engineer on Know Your Product, a supply-chain compliance platform taken live across 40+ countries. Built it full-stack, led enterprise customer conversations, and defined the product KPIs.
Customer-facing solution design and delivery across airline, banking, and eCommerce clients. Presented architecture and roadmaps to senior stakeholders and mentored 100+ consultants.
While rebuilding FAIE, my feedback-triage pipeline, I ran it across two LLM providers — Cloudflare Workers AI and Mistral — and scored them head to head on a hand-labelled set: sentiment accuracy, urgency, P0/P1 recall, latency, and embedding quality. Mistral edged ahead on classification; Workers AI won on edge latency. But the quality gap was not the real lesson.
The real lesson was operational. The model my deployed pipeline relied on had been silently deprecated: its calls were failing, and a catch block was quietly returning sensible-looking defaults, so nothing surfaced as an error. The output just got subtly worse. When I went to replace it, the first replacement had also been deprecated, so I had to switch twice. And the new model's response contract had changed shape — a runtime crash waiting to happen on real ingestion, caught only by a smoke test.
My takeaway: managed model catalogues are mutable infrastructure, not stable APIs. So I now instrument fallback-rate metrics as first-class observability, because silent degradation is the failure mode you cannot afford; I pin to versioned model IDs; and I weigh a provider's deprecation cadence and contract stability as heavily as its accuracy.
It is the kind of thing you only learn by shipping, breaking, and measuring.
See FAIE ↗Trained in the classical Indian dance form.
Chasing the best local food in every city I land in, though mostly craving spicy ramen wherever I go. 🤤
Exploring new places on the ground.