Full-stack product engineering

My full-stack work usually pairs a client people see with the system that makes it real: a mobile assistant and the admin behind it, an exchange and its matching engine, a banking app and the partner integrations it leans on.

The decisions that matter sit on the boundaries between them. That's where I choose what becomes a service, what stays in the client, and what nobody downstream should have to think about twice.

AI products across mobile, web, and data

LegalAgent runs two clients against one system: an Expo assistant for attorneys, and a TanStack Start admin where the team manages Microsoft SSO access, system prompts, and the document categories retrieval draws from. I built both sides of that boundary.

Token flows across contracts, data, and interface

A bid at Bitlauncher could only settle in the protocol's token, so the token bridge became the full-stack problem. Swapping USDT, USDC, or BITUSD into USDCred touches contracts, indexed events, wallet balances, and the bidding interface all at once.

Regulated products and exchange infrastructure

At Wink the React Native app sat on a serverless AWS backend I also built, and partner-bank APIs moved deposits, transfers, and account data through it. At Bitcash the exchange UI ran on a React, Node.js, PostgreSQL, Hasura, and Google Cloud stack I architected, matching engine and realtime chat included.

Writing about product systems

See the work

Browse the full project archive for implementation details and technology choices.

The roles and dates behind this work are on the full-stack CV.