Property managers live in spreadsheets. Rent comes in from dozens of tenants, sometimes on time, sometimes with a reference nobody recognises. Owners want accurate statements, and at the end of the year there's a report for every property.
Our client asked us to take as much of that manual work off their desk as possible.
Everything in one place
The system holds the core records a property manager works with every day:
- Owners and properties
- Tenants, agreements and rentals
- Income, invoices, statements and payouts
- Notification templates for tenant and owner messages
Because owners, properties, tenancies and money all live in one system, statements and reports are built from the same records rather than from separate spreadsheets.
Bank feeds, not bank exports
Instead of downloading and re-typing bank statements, the system connects to the client's bank accounts through Akahu, New Zealand's open banking platform. Every night it pulls in the last week of transactions, so the records are never more than a day behind the bank.
AI for the payments nobody recognises
Some payments arrive with a missing or garbled reference. Those used to mean a phone call or a guess. Now, each night, the system sends the unmatched payments and the active tenancy agreements to an AI model. It compares amounts, dates, rent cycles, due days, tenant names and addresses, and suggests which agreement each payment belongs to.
The suggestion is saved as a separate field next to the transaction, apart from its confirmed reference, so the team can see what the AI thinks without it overwriting anything. If the AI's answer can't be read, the job stops and logs it instead of guessing.
Paperwork that writes itself
Scheduled jobs handle the routine work overnight:
- Rental income is generated daily
- Bank transactions are synced and matched every night
- Invoices and statements are produced as PDFs
- Annual reports for every property are generated at the end of the financial year
- Scheduled notifications go out to tenants and owners every few minutes
Reliable by default
The system runs in Docker with a separate staging environment for testing changes, and the database is backed up every night.
Update, September 2026: we modernised the Python base image and tidied the scheduling so jobs run on New Zealand time.
The result
Matching payments, generating income records and producing statements no longer start from a blank spreadsheet. The routine work runs overnight, and the team's time goes on the exceptions instead.