<- back to _work

Splash Financial, US consumer-lending platform

A bank-linking fallback across origination and decisioning

role: Specified and built it across two services; filed the ERD and the ADR.

// problem

When the bank-aggregation provider cannot link a borrower's account, the application cannot move forward. Borrowers needed a manual path that origination and decisioning could both trust.

// approach

  • Spec, technical design, ERD and ADR before the code.
  • Hexagonal Kotlin and Spring Boot services, so the domain does not depend on the provider.
  • PostgreSQL with Flyway migrations, and explicit aggregates and invariants.
  • Transactional outbox events carry state changes from origination to decisioning.
  • Delivered through specify, plan, tasks and implement, with every ticket traced to the spec.

// architecture

// guardrails and production concerns

  • Invariants are enforced in the aggregate, not in the UI.
  • The transactional outbox keeps state changes and events from drifting apart.

// outcome

A manual bank-entry fallback across origination and decisioning, documented with an ERD and an ADR, and delivered against a committed spec.

// stack

  • Kotlin
  • Spring Boot
  • PostgreSQL
  • Flyway
  • Transactional outbox