Founding Engineer / Full-stack — TypeScript, Next.js, AI systems
I build the systems small organisations actually run on.
Four years shipping production software — from a 30-site global web estate at Unilever to a school platform I designed, built and still maintain as its only engineer.
Founding engineer on an internal staff platform for a five-branch school network: registration, class allocation, attendance and behaviour, replacing paper registers and spreadsheets. No public URL — so this is written up as architecture and decisions.
Founding Engineer — sole engineer, product decisions and build
Full-stack
Postgres
Auth
Domain modelling
Read the case study
No public demo
Internal system holding children’s records — no public demo and no public repository. Written up as architecture and decisions instead, which is the more useful read anyway.
A meeting transcript contains commitments you made, and they evaporate unless you write them down. Brain extracts only yours, resolves the dates deterministically, and keeps the source text even when the model fails.
Most cover letter generators write you a letter for any job. This one scores the posting against a preferences file first, tells you what is wrong with it, and only then drafts a letter in a style specified by explicit counter-examples.
Roles, and what actually changed because I was there.
Roles
March 2024 – presentFoundingCurrent
Founding Engineer
A UK supplementary-school network · Weekend school network, five London branches
Sole engineer on the internal platform the school network runs its operations on.
Designed and built the staff platform five branches use for registration, class allocation, student and guardian records, and attendance — product decisions and code both, as the only engineer.
Modelled the domain so invalid states cannot be written: one active class per student, one active teacher per class, one attendance session per class per day, one primary guardian per student — enforced by Postgres constraints rather than application checks.
Enforced branch isolation server-side. The selected branch lives in an httpOnly cookie and is re-validated against the user’s live assignments on every request, so no reader or writer can reach another branch’s data by tampering with the client.
Replaced paper registers and spreadsheets scattered across five sites with one system, and wrote the decision log and domain rules the build is held to.
Three-month contract building AI-backed tooling for public-sector clients.
Built full-stack features in Next.js and TypeScript, including the custom UI components the product was assembled from.
Shipped LLM pipelines that took structured input, ran it through the model, and rendered predictable output on the frontend — the plumbing and failure handling around the call, not just the prompt.
Automated go-to-market outreach workflows with scripting, taking repeated manual steps off the commercial team.
Next.js
TypeScript
LLM APIs
Node.js
May – December 2024Full-time
Software Engineer
Unilever
Owned delivery across a global web estate of 30+ sites in an Agile squad.
Ran a global 30-site web estate on Next.js and TypeScript, shipping UI features into production on a squad cadence.
Authored the WCAG-based web accessibility standards other teams built against — then made them enforceable with Cypress, axe-core and Lighthouse checks, so an accessibility regression failed the pipeline instead of reaching a user.
Replaced manual release steps with GitHub Actions CI/CD: linting, tests and zero-touch deployment.
Built backend services on Azure Function Apps and CosmosDB to capture performance metrics across the estate.
Translated stack decisions into roadmaps non-technical stakeholders could act on — the reason the accessibility standards got adopted rather than filed.
Next.js
TypeScript
React
Azure Functions
CosmosDB
GitHub Actions
Cypress
axe-core
Lighthouse
September 2022 – May 2024Apprenticeship
Software Engineering Apprentice
Unilever
Level 4 apprenticeship completed alongside full delivery work on internal tooling.
Built and maintained frontend components in TypeScript, React and Vue across several internal tools.
Wrote backend services with Node.js, Azure Function Apps and CosmosDB.
Wrote and ran the functional and accessibility test suites — Cypress, axe-core, Lighthouse — that became the groundwork for the standards I later authored.
Learned delivery end to end working alongside designers, PMs and senior engineers, and converted into an engineer role on the same estate.
TypeScript
React
Vue
Node.js
Azure Functions
CosmosDB
Cypress
2018 – 2022Part-time
Arabic Language Tutor
Al-Furqaan Institute
Four years teaching Arabic to mixed-ability classes before moving into engineering — and the reason I understood weekend-school operations well enough to be the one who built the platform for them.
Education
In progress
BSc Computing & Information Technologies
Completing June 2026
Completed
Level 4 Software Engineer Apprenticeship (HNC)
Unilever · Completed May 2024
Completed alongside production delivery work, not in place of it.
Skills
Languages
TypeScript first, and SQL rather than an ORM’s opinion of SQL.
TypeScript
JavaScript
SQL
HTML
CSS
Frameworks & UI
Next.js App Router day to day; Vue where the estate already used it.
Next.js (App Router)
React
Vue
Node.js
Express
Tailwind CSS
Data & infrastructure
Relational by default. Constraints in the database, not just in the handler.
PostgreSQL
Drizzle ORM
Neon
Supabase (Postgres, Auth, RLS)
Prisma
Azure Function Apps
CosmosDB
Firebase
Vercel
GitHub Actions
AI systems
Model calls treated as an unreliable dependency: schema-validated output, deterministic post-processing, graceful failure.
OpenAI API
Vercel AI SDK
Structured output with Zod schemas
Prompt design & evaluation
LLM pipeline design
Practice
The parts that decide whether any of the above survives contact with users.
Accessibility (WCAG, axe-core, Lighthouse)
Testing (Cypress, functional & a11y suites)
CI/CD pipeline design
Authentication & server-side authorisation
Domain & data modelling
Agile delivery
Technical writing & decision logs
Contact
Get in touch
Open to full-time engineering roles. I also take on a small amount of freelance work.
Direct
Email is the fastest way to reach me. I read everything and reply to anything specific.