Tyrrell AI and
Development Ventures
← Track record

A marketplace where money can never move twice

2024 a professional sports franchise Role: Backend Engineer (contract)

Context

An NFL franchise wanted suite holders to buy, sell, and swap their seats in a flow that felt consumer simple, while carrying the full weight of a real marketplace underneath: seller KYC, payment capture, platform fees, ticket delivery, and compliant payouts.

Problem

The original plan was built on an escrow API that could not keep users inside the app for the payment flow, a hard product requirement it turned out nobody had validated. And beneath the product gap sat the harder engineering truth of marketplaces: webhooks arrive late or twice, retries happen, and any naive implementation eventually charges a buyer twice or pays a seller twice.

The decision

Replace the escrow provider with Stripe Connect, and structure the whole transaction as a state machine with idempotent transitions. Seller onboarding became a first class workflow (find or create the connected account, surface Stripe’s outstanding KYC requirements, block selling until compliant) rather than a one time checkbox. Payouts were gated: funds moved to the seller only after the ticket passed a verification step, with the platform retaining its fee.

REJECTED: two things. The escrow API, which broke the in app requirement outright; and durable workflow infrastructure (Temporal) in v1: real, but a scale problem the beta didn’t have. Moving it from P0 to P1 shipped the MVP on time and under budget.

Execution

Webhooks were treated as the source of truth for payment outcomes, with transitions safe under duplicate and out of order delivery. Tickets routed through a platform controlled relay and a verification check before release to the buyer; only then did the transfer to the seller fire, itself built with retries and enough observability to answer the operational question that actually matters in a marketplace: where is this money or ticket stuck, and why? I diagrammed the buyer and seller flows end to end to align internal and client stakeholders before the build, which is also what made the descoping conversation winnable.

Outcome

0 → 1

Marketplace shipped, onboarding through payout

Idempotent

Every payment and transfer transition

Verified

Tickets confirmed before funds release

Takeaway

In payments, design for the retry. Money that must never move twice beats a happy path that usually works.