About
A senior engineer who ships
I am a senior software engineer in Swansea, Wales. I build complete products, the kind people actually log into, across mobile, web, API and data.
I started in August 2012 at Aareon, working on large-scale social-housing management software for the UK. I was a key contributor on the VB6 to VB.NET migration and then on the backend of the web-platform rewrite (Angular front end, .NET Core REST API, Entity Framework). After a short stint at Cardiff Metropolitan University building internal systems, I spent a year and a half at One Team Logic on safeguarding software used by schools and sports clubs, then four years at Curiosity Software in Oxford on enterprise test-data management. That is where the depth in C#, .NET and Angular comes from, alongside Java, and where I first led AI capabilities in a product. Roughly the first decade of my career was .NET and Java; the last few years have been TypeScript and React.
Since the middle of 2025 I have worked independently, on three things at once. At Knight Frank I took a contract as Lead Software Engineer and authored the architecture for an enterprise data platform, then led delivery on a small team (top contributor, not sole author; a colleague co-developed). At Recyclr I am a founding engineer, one of two engineers who built the whole product with a domain-expert CEO guiding it, and I own mobile, payments and the early architecture. And in between I build my own products, including a contractor finance tool I use to run my own company.
The way I work now is AI-native, but I am careful about what that means. I direct AI coding agents from written specs, in phases, and I own the architecture, the review and the correctness of every commit. The discipline is the same one I have relied on for years, only it matters more now: a loose spec no longer just slows you down, it gets you confidently wrong code faster. Being clear about what to build is the work. Separately, I build LLM features into products where they earn their place, and I keep that distinct from how I write code.
I am in Wales, so I work European hours and I am comfortable remote. I am open to senior full-stack roles and contracts where the problem is real and I would own delivery rather than wait on it. If that sounds like what you need, the work speaks better than I can here.
Experience
Where I have worked
Lead Software Engineer · Knight Frank
Jun 2025 – Jul 2026
Contract · London / Remote
Authored the architecture for an enterprise property-data platform and led delivery on a small team: a repeatable ELT backbone, a deterministic lease matcher over 7.4M leases, and a national vector-tile map.
Founding Engineer · Recyclr
Jun 2025 – present
Remote
One of two engineers building a live UK waste-carrier compliance SaaS across mobile, web and API. Owned the mobile app, Stripe payments and Tap to Pay, and the early architecture.
Senior Software Engineer · Curiosity Software
Mar 2021 – Jun 2025
Oxford
Enterprise test-data management and automation. Led the product's AI capabilities, designed a multi-dialect SQL query executor, and owned annual penetration testing, across a C#/.NET and Java/Angular stack.
Software Engineer · One Team Logic
Nov 2019 – Mar 2021
Talbot Green
Safeguarding software for schools and sports clubs (.NET, KnockoutJS, React). Migrated caching to Redis ahead of containerisation; ran blue/green releases on Azure DevOps and Octopus.
Software Engineer · Cardiff Metropolitan University
Aug 2019 – Nov 2019
Cardiff
Internal systems for staff and students, including a .NET Core REST API managing the Active Directory lifecycle of students from application to placement.
Software Engineer · Aareon UK
Aug 2012 – Jul 2019
Swansea
Large-scale UK social-housing management software. Key contributor on the VB6 to VB.NET migration and on the backend of the Angular / .NET Core web-platform rewrite.
BSc Computer Science · Swansea University
2008 – 2011
Swansea, Wales
Skills
What I work with
Grouped on purpose, not dumped. I keep building with AI and building AI features separate, because they are.
Languages
- TypeScript
- Java
- C#
- Python
- Swift
- SQL
Frontend
- React 19
- Next.js App Router
- Angular
- Turborepo
- React Native / Expo
- MapLibre
- Tailwind
Backend & data
- Node
- .NET / ASP.NET Core
- FastAPI
- Spring Boot
- PostgreSQL / PostGIS
- Hasura GraphQL
- Drizzle / JPA
- REST / OpenAPI
- Bruin
- dbt
- Meltano
Cloud & delivery
- AWS
- Azure
- Terraform / Bicep
- Docker
- GitHub Actions
- Azure DevOps
AI, kept as two separate things:
AI-assisted development
- Claude Code
- Cursor
- spec-driven & agentic workflows
- MCP
How I write code: written specs, agents directed from them, architecture and correctness owned by me.
LLM features
- multimodal document extraction
- reversible client/supplier anonymisation
- confidence-scored suggestions
- fit-scoring
- report generation
- SSE streaming
Product work, built on Google Gemini (Tax Tracker, Tender) and Azure OpenAI (Knight Frank sanctions reports). Where deterministic logic should own the numbers, it does.
Let us talk
If you are hiring for someone who can take an idea to production without much hand-holding, have a look at the work, then get in touch.