← all work
CASE STUDY2023 – 2024· confidential — no public code· dynt.ai

Dynta fintech, built by one engineer

Founding engineer who wrote ~82% of a fintech — 30+ EU banks, card issuing, AI bookkeeping.

~82%
of the codebase
30+
EU banks
−85%
invoice processing time
−90%
manual reconciliation

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

TypeScripttRPC + ExpressPrisma + PostgreSQLReact 18 + VitePython + CrewAIStripe IssuingSwan GraphQLTauri