Skip to content
Juan Felipe Ortiz
Español
03 · Case study

Bank commission platform

The monthly commission cycle for the advisors who sell Banco GNB Sudameris payroll-deduction loans, built solo: from the bank's Excel to signed payment requests and the bank's batch-payment file.

Software Developer, Process AutomationAugust 2025 – May 2026Solo · Lejarde & Ortiz × Banco GNB Sudameris20 h → 4 h in manual tests
Admin view “Pagos por Asesor” for a monthly cycle with demo data: version, gross and net totals, and a table of advisors with gross pay, discounts, refunds and net pay.

Problem

Lejarde & Ortiz S.A.S. is a provider of Banco GNB Sudameris: its sales advisors sell the bank's payroll-deduction loans, and coordinators supervise them city by city. Every month the bank sends an Excel file of the loans paid out, and every advisor and coordinator earns a commission on them. That cycle was done by hand: split the Excel, send the pieces to coordinators over WhatsApp and email, collect corrections, apply discounts and refunds in a spreadsheet, chase signed payment requests (cuentas de cobro), then type every payment into the bank.

What I built

A web platform that runs the whole monthly cycle, with a portal for each role: admin, coordinator and advisor.

  • Excel ingestion and matching. The admin uploads the bank's file. The parser normalises header variants, amounts and Excel dates, and flags invalid rows with a reason. Each loan is matched to its advisor by seller code and to a coordinator through dated assignments; unknown codes wait in a queue.
  • An audited five-state cycle. Each month moves from ingested to under review, adjusting, ready for export and closed, and every transition is logged. Coordinators approve loans or propose fixes, such as a loan sold in another city; the admin accepts or rejects them.
  • Tiered commissions. Dated, per-person rules pay a rate per million pesos that steps up as an advisor's monthly volume crosses milestones; coordinators earn on their team's volume. Every recalculation creates a new payout version.
  • Signed PDFs. Advisors add their bank details and signature and choose full, partial or split payment. The platform renders each cuenta de cobro as a PDF with the amount in words and the tax-statute certification.
  • The bank's batch file. It exports GNB's batch-payment file: one fixed-width, 238-character line per payee, and the export stops if a single line is off.

My role

Sole developer: 118 of 118 commits, from the data model to the Docker deployment. I started on FastAPI and Python and rewrote it in TypeScript on Hono partway through. I planned it with the BMAD method (PRD, architecture, stories) and directed AI coding agents through the build.

Stack

TypeScript on Node 22, Hono with server-rendered templates, PostgreSQL 16 with Drizzle, SheetJS for Excel, Puppeteer for PDFs, S3-compatible storage and Docker Compose. About 68 unit tests and about 220 Playwright end-to-end tests, including accessibility and mobile suites.

Result

In manual tests, the monthly cycle went from 20 hours to 4 hours, 80% less time. The platform produces the signed payment requests and the bank file itself, so nobody has to split spreadsheets or retype payments.

Coordinator portal: a demo loan's details and its current advisor and coordinator assignment, with a “pending review” status.Generated Cuenta de Cobro PDF with demo data: the amount in figures and in words, the bank account, a signature and the tax-statute certification.