CASE STUDY · FREELANCENOV 2025 — PRESENT

EFI Soluciones

EFI (Equilibrio Financiero) makes short-term loans, over 14 weeks, and ran its entire operation on Excel. I built the system that digitized it: a Ruby on Rails web portal to manage loans, clients, staff and money, and a Flutter mobile app, published on Google Play, for each role’s field work.

Role
Sole developer · freelance
Since
November 2025
Website
efisoluciones.com ↗
App
Google Play ↗
01

Context

From Excel to a system

EFI is a lender with its own operations and in-house legal team. Loans, collections, staff and supervision all lived in Excel spreadsheets. It needed to digitize its entire operation while respecting how it already worked: the business rules and decisions are EFI’s; my job is to turn them into a reliable system.

02

Web portal

The whole operation in one place

loansOrigination, approval, payments, renewals and continuity for each loan.
clientsFull file and history for each client and their co-signers.
staffPromoters, supervisors, executives, legal and administration, each with their own permissions.
moneyIncoming payments, weekly reconciliation and cash receipt.
reportsDashboard of financial status, debt and projections, with Excel and PDF exports.
controlBusiness configuration, supervision and a history of who changed what.
03

Mobile app

One app, one flow per role

The same Flutter app adapts to whoever signs in. It includes push notifications, camera attachments, session control, user blocking and new-version notices.

See EFI on Google Play ↗

promoterField work: registering clients and loans, with CURP validation by reading its QR code.
supervisorFollow-up on their team’s work.
executiveReconciling each week’s money.
administrationApprovals and overall control.
04

The hardest part

My first mobile app

I had no mobile development experience. I learned Flutter, app architecture with Riverpod and GoRouter, Firebase Cloud Messaging on Google Cloud for push notifications and the Google Play publishing process, until the app was in production for EFI’s whole team.

05

Technical decisions

01

Decimal-precision amounts

Every amount is handled as a decimal, never as floating point, and interest calculation lives in a single module.

02

Change auditing

A record of who changed what in the main models with PaperTrail, and a viewer for administrators.

03

Private files

Client files and reports with personal data live in a private Cloudflare R2 bucket, served through short-lived signed links.

04

Infrastructure

Migration from Heroku to Render for web, worker and PostgreSQL, and from a suspended .com.mx domain to .com, with DNS on Cloudflare.

06

Stack

Ruby on RailsPostgreSQLHotwireTailwind CSSPunditPaperTrailSidekiqMinitestFlutterRiverpodGoRouterFirebase Cloud MessagingCloudflare R2Render