Engineering
How the things I've built actually work
Write-ups of production systems — the decisions, the trade-offs and the failures. Client names and data are deliberately absent; these are about the engineering, not who paid for it.
- PaymentsWhen is the money actually there?Building a two-sided marketplace where a booking is only fulfilled once payment has genuinely settled — and why the browser redirect can't be trusted to tell you that.
- ReliabilityThe outage that logged at debug levelA feature degraded silently in production for weeks because three separate fallback paths turned a hard API failure into a quiet one. A postmortem on defensive code that defends the wrong thing.
- ReliabilityThe one row that ate the queueA background worker with no terminal-failure state retried a single unprocessable item forever, starving every healthy item behind it and burning paid API quota continuously.
- AI systemsKeeping embeddings fresh without blocking a requestSemantic search is only as good as the freshness of its embeddings. An indexing pipeline with one authoritative write path, batch backfill, real-time incremental updates, debouncing and dead-letter handling.
- AI systemsGetting a data structure out of a language modelA tool-calling ReAct agent that turns unstructured documents and third-party profile data into a validated record — and what breaks when you treat model output as trustworthy.
- MobileOwning a React Native release end to endTaking a cross-platform app from an empty repository to live releases on both stores — signing, provisioning, per-PR builds and the parts of mobile delivery that have nothing to do with JavaScript.