Matheus Krisciumas
All work

Keiken · Full-time · Feb 2023 — Jan 2024

Async money movement for a benefits marketplace

Backend ownership for flows between partners, clients, and associated companies.

JavaSpring BootAsync EventsQueryDSL
Keiken marketplace listing a psychologist with price, filters, and a booking calendar.
Marketplace surface: specialists, filters, and booking.
Diagram of payments from users through the app and company to partner payouts.
How money moves between users, the company, and partners.

The idea

Settlement cannot live in a request. Money between partners, clients, and associated companies has to move as an async path that still closes the month.

The situation

Keiken is a benefits marketplace. The backend already existed. I learned Java and Spring Boot on the job to extend it without breaking settlement between parties.

How it works

A partner event is ingested, a worker settles the batch, and the ledger is read with filters that would be painful as ad-hoc SQL. The month is about R$120k of movement. If that path is synchronous, one slow partner holds everyone else.

The idea was to treat money movement as messaging plus a scheduled close, then put JUnit around the path so a change in QueryDSL did not silently skip a party.

What shipped

Async flows with Spring Messaging, cron jobs for the batch, QueryDSL for the complex reads, and regression tests on the settlement path.

  1. 01Partner event ingestedSpring Messaging
  2. 02Cron settles the batchscheduled
  3. 03QueryDSL reads the ledgercomplex filters
  4. 04JUnit guards the pathregression net
Monthly
R$ 120k
Style
Async
Tests
JUnit

The problem

Money had to move reliably across parties. I learned Java and Spring Boot on the job to extend an existing API without breaking settlement.

What shipped

Built async flows with Spring Messaging and cron jobs processing about R$120k per month, plus JUnit coverage and QueryDSL queries.