Rental-property tax automation
Receipts in, a lodgement-ready financial-year pack out — with the judgment calls flagged rather than guessed.
-
It starts with a photo of a receipt.
Forwarded into a chat, or picked up by the browser addon. The vendor decides which ATO schedule the line lands on before anything else looks at it.
-
Rules go first, the model goes second.
Vendor rules route what they can. What is left is the judgment that changes the deduction — repair or capital — and that goes to a model, not to a guess.
-
What it cannot decide, it flags.
An unresolved line stays marked as a gap in the financial-year pack. The pack is ready to lodge with its open questions still open, which is the only honest way to hand it over.
- 01 Automated AU rental-tax accounting end to end — Telegram and addon receipt ingest with vendor-based ATO-schedule routing, an LLM categoriser for repair-vs-capital judgment, and generation of a myTax-ready financial-year pack with gap flags on unresolved line items
- 02 Built a Wealthfolio browser-extension addon and a local HTTP bridge to sync bank statements (NAB, Macquarie) — including a liability-account model for card and mortgage balances — and a depreciation engine feeding the tax pack
- 03 Diagnosed and fixed a broker API integration bug by reverse-engineering the correct IBKR v3 asset payload shape from source, resolving a defect that valued portfolio holdings at $0.
- 04 Built a universal document router that combines rules-based classification with an LLM (Haiku) fallback to auto-classify and file uploaded financial documents by type.
Interface recreated with invented data — no production screenshot is published. Private system; walkthrough and code review available on request.
- Role
- Sole engineer
- Timeline
- 2026 — ongoing
- Stack
- Python · SQLite · Telegram · browser extension