From 15 Hours to 2 Hours: Automating NDIS Payroll Compliance
How we built custom automation to handle complex allowances, break compliance, and clock-in validation that standard integrations couldn't solve.
The Challenge
An NDIS provider was using ShiftCare + Xero, but their real payroll rules were too complex for the standard integration.
- Complex allowances (especially active night)
- Break compliance across grouped shifts for 55+ staff
- Inconsistent mileage handling
- Clock-in issues requiring manual investigation
The admin team spent about 15 hours/week checking shifts, fixing break records, and chasing anomalies.
The Approach
Phase 1: Streamlit checker
First, we built a Python + Streamlit checker to flag risky items and safely auto-fix deterministic break-time issues.
- It flagged allowances, break compliance, and clock-in anomalies.
- It auto-fixed break timings only where rules were deterministic.
- Everything uncertain stayed in a human review queue.
This phase proved detection quality without risky mass updates.
Phase 2: Safe auto-approver
Once phase 1 was stable, we introduced an auto-approver with strict safety rules: auto-fix when clear, flag when uncertain.
For each selected pay period, the system:
- Applies the proven break-time fixes
- Applies active night allowances where eligible
- Uses shift logs + Gemini 2.5 Flash Lite for ambiguous attendance cases
- Auto-approves when evidence is sufficient
- Flags anything uncertain for manual review
Mileage automation was deprioritised because the client's process changed and mileage became too irregular for reliable automatic handling.
New Workflow
- Handle exceptions for the period.
- Run the auto-approver.
- Review only the flagged shifts.
This keeps humans involved where judgment is needed, not on routine checks.
The Results
- Manual effort dropped from ~15 to ~2 hours per week.
- Payroll quality improved and recurring errors were removed.
- Compliance checks became consistent across 500+ shifts/week.
- Admin effort shifted from data entry to review/oversight.
Technical Highlights
- ShiftCare API integration with audited writes
- Python + Streamlit checker app
- Auto-approver workflow with Gemini-assisted decisioning
- Shift-grouping logic for break compliance
- Clock-in validation using notes/tasks/event logs
Safety & Testing
- Staging tests before production rollout
- Audit logs for every change and approval
- Conservative thresholds (ambiguous cases are flagged, not auto-written)
- Gradual rollout from low-risk to higher-impact automations
TL;DR
We started with a conservative checker, proved reliability, then expanded into a safe auto-approver. The team now spends about 2 hours/week on payroll oversight instead of 15.
