About

Why I Built Iceberg

I kept making debt avalanche payments that wrecked my budget two weeks later.

Not because I was bad with money. Not because I didn't understand the math. I knew exactly how the debt avalanche worked. I'd done the calculations. I had a plan. But I kept making extra payments at the wrong time — right before a cluster of bills would fire — and ending up with $40 in my account the day before a paycheck, stressed, and wondering where I went wrong.

The problem wasn't my strategy. The problem was that every calculator I tried modeled my finances at a monthly resolution, and I lived at a daily resolution. I'm paid biweekly. My bills fire at different points in the month. The gap between "I have capacity this month" and "I have capacity today" is where I kept making mistakes.

It Started as a SQL Query

I'm an SQL developer. When I can't find a tool that does what I need, I build one. My first version of Iceberg was a SQL query — a recursive date-stepping calculation that modeled my balance day-by-day, firing each income and expense entry on its actual scheduled date.

I shared it on Reddit as a SQL Fiddle, with some explanation of why biweekly pay creates timing problems that monthly calculators miss. More people than I expected said it solved a real problem for them. So I kept going.

The problem I kept running into wasn't discipline. It wasn't overspending. It was visibility. I'd make an aggressive debt payment in July because the numbers looked fine — and find out in October that I'd set myself up for a collision I couldn't see coming. Semi-annual insurance, an annual expense, and a billing cycle that didn't align with my paycheck all landing in the same window. The emergency fund covered it. Barely. And for the next three months, extra payments were off the table while I rebuilt it.

Iceberg exists because that should never be a surprise. The collision was always there in the data. I just needed something to show it to me before it happened.

Version 1 — SQL Query

A recursive CTE that stepped through dates, fired scheduled entries, and returned a day-by-day balance table. Shared as a SQL Fiddle on Reddit. Useful but not exactly user-friendly.

Version 2 — Python Script

Rewrote the logic in Python with a config file for entries. Added the ability to model "what if I made an extra payment on this date?" and see the projected low point. Still ran from the command line.

Version 3 — Raspberry Pi Flask App

Mounted a Raspberry Pi touchscreen on the wall. Wrapped the Python engine in a Flask web app with a proper UI. My family could actually use it. This version had the biweekly paycheck problem solved correctly, debt entries, the balance graph — basically everything Iceberg does now, running on a $35 computer in my kitchen.

Version 4 — Mobile App

Rebuilt as a proper mobile app. The core engine is still the same day-by-day simulation — it just runs on your phone now, with cloud sync, household sharing, and a real UI instead of a Flask template.

Who This Is For

I built Iceberg for people like me. A father of three, working a regular job, paid biweekly, trying to pay off debt intelligently without causing a cash flow crisis every other week. Not wealthy. Not a spreadsheet wizard. Just someone who needs to know: is it safe to make this payment today?

Iceberg is not for people who want to track every coffee purchase and categorize their discretionary spending into 40 buckets. If you want that, there are plenty of apps for it. Iceberg is for people who already know what their income and bills are, and want to see the future — day by day — so they can make confident decisions about their debt payoff without second-guessing every extra payment.

I'm one person building this. No funding, no team, no marketing budget. Just a tool that solved a real problem for me, and apparently for some other people too. It's free on Google Play.

Try it with your own numbers.

Takes about 5 minutes to set up. Enter your income, your bills, your debts and see the day-by-day projection that shows you when it's actually safe to pay extra.

Get it on Google Play — Free →