Client products delivered end to end — architecture, front end, backend, deploy — with brand identity and visual systems handled in the same pass, so design and development stay one continuous process instead of two handoffs.
I build AI-native products end to end — the architecture, the agent systems, and the production interface on top. A probabilistic core wrapped in deterministic scaffolding, shipped by one person who owns the whole lifecycle: a decade live is the test I care about, not launch day.
Client products delivered end to end — architecture, front end, backend, deploy — with brand identity and visual systems handled in the same pass, so design and development stay one continuous process instead of two handoffs.
Own architecture, full-stack delivery and the AI layer of a design-assets subscription marketplace. Close to a decade live and rewritten underneath itself — monolith into Node microservices for auth, payments and downloads behind a Next.js BFF, Mongo + Redis, self-hosted — without paying users ever feeling the migration.
Led front-end implementation and built the internal design systems and pattern libraries the team worked against.
Primary technical point of contact with clients, bridging creative vision and technical execution.
Visual identity, print and digital production, creative direction.
Design-assets marketplace run and rewritten end to end for a decade: Node microservices, GraphQL, Mongo + Redis, Next.js BFF.
Spaced-repetition language platform: an AI engine generates lesson content into Zod-validated structured outputs; web + iOS from one Next.js / Capacitor codebase.
Multi-tenant SaaS where photographers run branded stores: Next.js, tRPC, Postgres with row-level security, Stripe Connect.
Python engine decoding Photoshop smart-object perspective and mesh warps, compositing artwork near-interactively behind FastAPI and a Next.js editor. Working MVP.
Real-time SVG customisation app: recolour layers live, export SVG, sprite, icon-font or PDF. Its parser became svgson.
Config-driven framework: declare the data model once, get the GraphQL server, client operations and an admin dashboard.
A genuine interest in the transmission of knowledge — mentoring, explaining technical concepts to non-technical audiences, sharing tools and methods with peers.
Long-term involvement with non-profits leading groups of children and young people — weekly meetings, project facilitation, travel coordination.
Autonomous and self-directed, used to owning projects end to end — solo or leading a team. I speak to clients directly and translate between technical and creative without losing either.
You design with it the way you'd design with type or motion. The engineering around the model — the loop, the tools, the evals — is the hard part to copy.
When the model won't do something reliably I redesign the loop, constrain the output and measure — instead of prompting harder.
Boring defaults on purpose, a swappable seam wherever a vendor could lock me in, a custom tool for the real gap.