Skip to content
All projects

_03.

Modulos

In progress

A personal debt-management companion: check whether a new loan is affordable and plan the fastest way out of debt.

Team project with Sri Meduri. Sri came up with the idea, runs marketing, and built the 12-month income vs. expenses chart. I built the app and its backend.

Modulos payoff plan: with $400 extra a month, debt-free in 2 years 9 months instead of 4 years 3 months, saving $3,630 in interest.

01Problem

People juggling several loans often can't tell whether a new loan is actually affordable, or which debt to pay down first. Most tools that help either require a bank login or try to sell refinancing.

Modulos answers both questions in a couple of minutes, with or without connecting a bank.

02What I built

  • An affordability check that computes debt-to-income ratio against conservative, moderate, or aggressive thresholds and returns a clear Safe / Not recommended answer.
  • An avalanche payoff planner that orders loans by APR, projects the payoff date and interest saved, and lets you drag an extra-payment slider to see the difference.
  • Take-home pay from gross income: federal, state, and local income tax, FICA, 401(k), and other pre-tax deductions.
  • Optional bank connection through Plaid that imports loans, recurring expenses, and 12 months of income vs. expense history.
  • Accounts with email or Google sign-in, plus a guest mode that keeps everything in the browser.

03How it works

A serverless backend on AWS

I rebuilt the app on AWS Amplify Gen 2: Cognito handles email/password and Google sign-in, an AppSync API on DynamoDB stores each user's finances with owner-based authorization, and Amplify's pipeline deploys the backend and frontend together.

Bank tokens never reach the browser

Plaid access tokens live in a separate DynamoDB table that only the Plaid Lambda function has IAM access to, so there's no API path to them at all. The browser only sees connection metadata. OAuth redirect URLs are checked against an allowlist, and sandbox and production Plaid environments are kept apart.

Making bank sync hold up on real accounts

Real bank logins broke the happy path, so sync now handles banks with no loan accounts, detects subscriptions from raw transactions when Plaid's recurring-transactions API isn't available, counts Zelle and Venmo payments as cash flow while ignoring transfers between your own accounts, and retries until a new connection's history arrives.

Failing loudly instead of silently

AppSync reports rejected writes in an errors array instead of throwing, so a failed save looked like a success. Saves now surface errors to the user, and values are cleaned into strict JSON (no NaN or undefined) before they're sent.

Modulos payoff timeline bar chart and per-loan payoff schedules for a credit card, auto loan, and student loan.
Avalanche payoff timeline and per-loan schedules (sample data).
Modulos dashboard with a 12-month income and expenses chart and summary cards.
The dashboard (sample data).
Modulos landing page: Take Control of Your Loans.
Landing page.

04My role

  • Built the original app: the interface and the financial logic — avalanche payoff math, the debt-to-income affordability check, and the take-home pay calculation.
  • Rebuilt the backend on AWS Amplify (Cognito, AppSync, DynamoDB, Lambda) and built the Plaid bank integration.
  • Added the privacy policy, sign-up consent, and search-engine basics (robots.txt, sitemap).

05What's next

  • Modulos is still in development. You can try it without an account in guest mode at modulos.app.