Inspiration

It's often hard to understand credit card debt when you use a card for all purchases. Charges, payments, and interest all get lost in the list and it's hard to see if progress was made from one month to the next. Solvo was built to make that progress actionable and easy to see.

What it does

Solvo connects credit cards through Plaid and turns all card activity into an easy to understand debt-management dashboard.

  • Separates transactions into payable bills to create transparency in card activity.
  • Initial sync creates a "Starting Balance" bill, which can be split as desired, instead of requiring users to select which transactions are relevant to the balance.
  • Shows each month's opening and current balance, then calculates the net changes after factoring in all charges, payments, and interest.
  • Upon card payment sync through Plaid, will automatically apply exact matching payments to a bill 7 days old or less
  • Logs non exact matching payments into an "unallocated" pool to be applied to other transactions so the user can pay off old bills or manage recent ones.
  • Allows users to split unallocated payments across bills as desired, to whole bills or individual charges.
  • Allows users to create bill groups, like a vacation, even if charges are made from different cards.
  • Payments remain card-specific. A payment from Card 1 can only be applied to a transaction from Card 1, even if in a shared bill group.
  • Provides a global Bills workspace as well as a Cards workspace, so users can see big picture bills and per-card transactions as needed.

How we built it

Solvo is a Laravel and Vue application using Inertia, Tailwind CSS, SQLite, and Plaid.

Solvo was build with Codex using GPT-5.6 (Terra and Luna). Codex helped us turn plans into actionable tasks for both the backend and UI, write and test Laravel code - from migrations to controllers and actions, build the Inertia/Vue interfaces, and run focused QA passes.

A major part of the build was ensuring we implemented safe financial behavior. We never auto-apply ambiguous payments, payment allocations cannot be applied cross-card, and multi-card bill groups aggregate the debt total without mixing card sources.

Challenges we ran into

The most difficult part wasn't importing transactions, but preserving user intent. Not all payments are directed towards a certain transaction, some need to be dispersed manually. But, manually dispersing exact matches would become tedious. We landed on exact matches within 7 days. We also decided to upgrade card-owned groups to user-owned groups. When travelling, you don't always use the same credit card (maybe you get 3% cash back at the gas station on one, but 4% cash back at a restaurant on another). So bill groups can span multiple cards, while still keeping payments and starting balances correctly card-scoped.

Accomplishments that we're proud of

Solvo turns a confusing and noisy list of card activity into a dashboard that brings clarity and answers practical questions:

  • What changed this month?
  • What payments are still unallocated?
  • Which bills are still unpaid?
  • Did paying this on this card actually reduce the balance?
  • How much do I still owe for this vacation?

What we learned

User intent is never simple. Trying to preserve that is key.

What's next for Solvo

  • Adding mobile-first functionality and workflows.
  • Richer payment history and allocation controls.
  • Statement aware reporting.
  • User directed guided payoff strategy.

Built With

Share this project:

Updates