← All projects

HomeFree

A platform for New Zealand mortgage advisors and their clients: an advisor web app, a client mobile app, and a shared mortgage engine that forecasts every loan to spot refix and refinance opportunities before they're missed.

Web apps, Mobile apps, Data & reporting, Automation

Visit the live site ↗
Type
Client work
Status
Live
Year
2026
Built with
Turborepo, pnpm, TypeScript, Next.js, Expo, React Native, Supabase, Postgres, Inngest, Stripe, Resend, NativeWind, Vercel, EAS

A mortgage advisor's best work happens after settlement. Fixed terms roll off, rates move, a client's income changes, a better deal appears at another bank. Each one is a chance to save a client real money, but only if the advisor spots it in time.

Most advisors track this in spreadsheets and calendar reminders. They find out a fixed term has ended when the client does, and they work out break fees and refinance savings by hand, one loan at a time. Clients are even further in the dark: their banking app shows a balance and not much else. There's no way to ask "what if I paid $100 more a fortnight?" or "what does this refix actually save me?"

HomeFree fixes both sides. The advisor gets a web app that watches every loan they manage and tells them where the opportunities are. The client gets a mobile app that shows where their mortgage is heading and lets them try changes and approve their advisor's proposals. Underneath both sits one mortgage engine, and that engine is most of the story.

Impact

On the App Store and Google Play, with an advisor web app
Live
Automated tests, about 400 of them on the mortgage engine
1,040+
Every loan re-forecast to surface refix and refinance opportunities
Daily
Compared on every term and LVR band for each proposal
9 lenders

Built in six months

  1. February 2026Monorepo and foundations

    Turborepo with a Next.js web app, an Expo mobile app and shared packages from day one. Supabase auth, invites, lender rate cards, and the first break-fee maths.

  2. March 2026The forecasting engine

    Month-by-month loan forecasts with rate mean reversion, the daily opportunity scanner, the refix comparison wizard, wholesale rates, negotiated rates and split loans.

  3. April 2026Every kind of loan

    Restructures, revolving credit and offset limits, and the Android build with over-the-air updates through EAS.

  4. June 2026Deeper maths, and billing

    Interest-only phases, annual payment increases, lockable split amounts, "vs best" savings badges, and Stripe plans for advisors.

  5. July 2026Live

    LVR calculated from the estimated current balance, CI deploys, and the apps in the stores.

How it was built

HomeFree was my first monorepo, and the monorepo is the point. The advisor's web app, the client's phone and the overnight scanner all have to agree on what a loan will cost. If the web app says a refix saves $4,200 and the phone says $3,900, nobody trusts either. So the mortgage maths lives in one package, @homefree/calculations, with no React, no Next.js and no database code in it. Every app imports the same functions.

Rates and loan data come in, Supabase stores them, and one set of shared packages powers the web app, the mobile app and the daily scanner.

What I built

Forecasting a loan properly

A mortgage calculator assumes today's rate lasts 30 years. Real loans don't work like that, and a forecast built that way is wrong by tens of thousands of dollars.

HomeFree's engine simulates each loan month by month. While the loan is fixed, the rate stays put. When the fixed term ends, the rate starts moving toward a long-term assumption of 5%, by no more than half a percent a year, because rates rarely jump straight back to average. At every reset the payment is re-priced to whichever is higher: the new minimum, or the old payment plus the client's annual increase. It handles weekly, fortnightly and monthly payments on a true calendar year, interest-only periods, and splits of up to four loans with different terms.

The same simulation answers everything else: the payoff date, total interest, the month payments start going mostly to principal, and year-by-year comparisons between two scenarios.

One loan's forecast, generated by the real engine. The rate eases from 5.89% to the 5% long-term assumption after the fixed term, payments step up at each reset, and the loan is paid off in May 2043.

Spotting opportunities before they're missed

Every morning a background job runs every loan through the engine. For each loan it asks two questions: would refixing now, or at the end of the term, save the client money? And would moving to another lender beat staying, once break fees, cash contributions, clawbacks and legal fees are counted?

Break fees are estimated from wholesale rate movements as a minimum-to-maximum range, because banks don't publish their exact method. They're checked against the worked examples of the advisor I built HomeFree with. Refixes worth $500 or more and refinances worth $2,000 or more become opportunities. Advisors get an email, and a dismissed opportunity only comes back if the saving grows by another $500.

The advisor's opportunities. Every row is a loan the engine thinks is worth a call, with the potential gain after break fees and where it's up to.
homefree.co.nz/dashboard/opportunities

Comparing every lender honestly

A lower rate isn't always a better deal. A proposal compares every lender on the same terms: three years of payments at that lender's rate for the client's LVR band, minus any cash contribution, plus break fees, clawbacks and legal costs. Each option is ranked and shows how far it is from the best. The advisor picks which ones to send, and the client sees exactly the same numbers on their phone.

Below, the scanner has flagged the Tanaka loan for a refix with its current bank. Before calling, the advisor checks whether moving lenders would do even better.

Building a refinance proposal. Lenders are ranked on the true three-year cost, not the headline rate.
homefree.co.nz/dashboard/proposals/new

Putting the client in control

On their phone, clients see when they'll be mortgage free and what's coming up. Test Payments lets them drag a slider to pay a bit more, or set an annual increase, and watch their payoff date and lifetime interest change instantly. It's the same engine, running on the phone.

When their advisor sends a refix, the client picks a rate, adjusts their payment and approves it in a couple of taps. The advisor's view and the client's view are built from a pair of functions that are exact inverses of each other, and tested that way, so they can never disagree about what was proposed.

Test Payments on the client app. Paying $2,100 a fortnight instead of $1,840 pays the loan off 2.6 years sooner and saves $56,500 of interest. The numbers come from the real engine.
A refix proposal on the client's phone. Each rate shows its payment, payoff date and three-year cost against the best option.

What I'd take from it

HomeFree taught me where the value in a product like this really sits. The screens matter, but the trust comes from the maths being right, every time, in every place. Putting that logic in one framework-free package, testing it against the advisor's own worked examples, and making every app use it is what made the rest possible.