I build the integration layer that other teams would rather avoid.
At Curri I architected the systems connecting the platform to third-party delivery providers — Uber, Pronto, and others — each with a different API shape, auth model, and reliability profile. That meant a shared contract every provider implements, a selection layer that surfaces all live options in a single request without letting one slow upstream block a quote, and a synchronization tier that uses webhooks where providers support them and background workers with polling and reconciliation where they don't.
That's the work I'm best at: taking a messy external surface and handing the rest of the org one clean interface to build on.
Nine years across the stack — TypeScript, React, Next.js, Node.js, NestJS, GraphQL, PostgreSQL — almost entirely remote, on distributed teams, owning features from schema to UI. Most recently at UpKeep on a fixed-term engagement, shipping full-stack features and shaping how the team used AI tooling without letting it erode code ownership.
I write here regularly about backend and React patterns — Postgres internals, Next.js performance, and where AI-assisted development actually breaks down.
Open to senior full-stack and platform roles. Remote, UTC-4, full overlap with US hours.