← all work
CASE STUDYJun 2023 – Apr 2024 (full-time), then ongoing· confidential — no public code

Dynta fintech, built by one engineer

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

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

I was the founding engineer at Dynt, an SMB finance platform. Across three repos I authored 2,913 of 3,559 commits — about 82% of the codebase — and roughly 61,000 lines of TypeScript I predominantly wrote myself.

I built the open-banking sync layer that normalizes Swan, Yapily, GoCardless, and CSV imports into one model, with per-bank auto-sync fanned out via Promise.allSettled across 30+ connectable EU banks. On top of it: Stripe card issuing with Zod-validated KYC, a json-rules-engine automation system with a full audit trail, and a CrewAI categorizer-to-verifier crew (deployed May 2024) that reads transactions in batches of 15 per organization.

The front end is a 42,595-line React 18 app across 27 page modules — duplicate detection, @mention comments over socket.io rooms — wrapped as a Tauri desktop build.

The hard part

Out-of-order bank webhooks

Swan delivers webhooks with no ordering guarantee, so a Card.Updated could arrive before the Onboarding.Created it depends on, corrupting state. 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 the queue never wedges. It turned a class of intermittent, impossible-to-reproduce data bugs into a deterministic pipeline.

Highlights

  • Authored 2,913 of 3,559 commits (~82%) across three repos and ~61,000 lines of TypeScript I predominantly wrote.
  • Built a multi-provider sync layer normalizing Swan, Yapily, GoCardless, and CSV into one model, with per-bank auto-sync via Promise.allSettled across 30+ EU banks.
  • Solved 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).
  • Deployed a CrewAI categorizer-to-verifier crew plus a merchant-inference agent (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