I was Dynt's founding engineer — an SMB finance platform. I wrote ~82% of the codebase across its three repos: open banking, card issuing, the automation that runs the books, and the front end were all mine to design and own.
I built the open-banking sync layer that folds Swan, Yapily, GoCardless, and CSV imports into one model, with per-bank auto-sync fanned out via Promise.allSettled across 30+ EU banks. On top: Stripe card issuing with Zod-validated KYC, a json-rules automation engine with a full audit trail, and a CrewAI categorizer-to-verifier crew (live May 2024) that reads transactions 15 at a time per org.
The front end is a 42,595-line React 18 app across 27 page modules — duplicate detection, @mention comments over socket.io rooms — shipped as a Tauri desktop build.
The hard part
Out-of-order bank webhooks
Swan fires webhooks with no ordering guarantee — a Card.Updated can land before the Onboarding.Created it depends on, and state corrupts. I built a typed EventQueue that serializes events per entity ID and replays them by a dependency-priority ranking (Onboarding.Created=0 up to Card.Updated=9), draining the next event whether the current one succeeds or fails so it never wedges. A class of intermittent, impossible-to-reproduce data bugs became a deterministic pipeline.
Highlights
- Founding engineer who wrote ~82% of the codebase across three repos — open banking, card issuing, automation, and the front end.
- Built a multi-provider sync layer folding Swan, Yapily, GoCardless, and CSV into one model, with per-bank auto-sync via Promise.allSettled across 30+ EU banks.
- Tamed out-of-order Swan webhooks with a typed EventQueue that serializes per entity ID and replays by dependency priority (Onboarding.Created=0 … Card.Updated=9).
- Put a CrewAI categorizer-to-verifier crew and a merchant-inference agent in production (May 2024) with Pydantic-constrained JSON output.
- Shipped a 106-model Prisma schema with 53 enums behind 329 tRPC procedures.
Stack