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
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
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.
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.
April 2026Every kind of loan
Restructures, revolving credit and offset limits, and the Android build with over-the-air updates through EAS.
June 2026Deeper maths, and billing
Interest-only phases, annual payment increases, lockable split amounts, "vs best" savings badges, and Stripe plans for advisors.
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.
Monorepo: Turborepo and pnpm workspaces, with shared strict TypeScript configs and a custom lint rule that stops anyone computing "today" in UTC.
Web: Next.js 16 and React 19, with shadcn/ui, Tailwind, TanStack Query and Recharts.
Mobile: Expo SDK 54 and React Native with NativeWind and Reanimated. Built and shipped with EAS, including over-the-air updates.
Backend: Supabase Postgres with 149 row-level security policies, and Inngest for the daily rate syncs, the opportunity scanner and push notifications.
Also: Stripe billing for advisors, Resend and React Email, Expo push, and a vision model that reads a banking-app screenshot into loan details.
What I built
A forecasting engine: every loan projected month by month, with rates that move after the fixed term ends and payments that re-price at every reset.
Break fees and refinance maths: break-fee ranges, cashback and clawbacks, and a three-year cost comparison across nine lenders.
A daily opportunity scanner: it re-runs every loan through the engine and tells advisors which clients to call.
An advisor web app: clients, loans, opportunities, proposals and rates in one place.
A client mobile app: where their mortgage is heading, what-if scenarios, and one-tap approval of proposals.
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.
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.
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.