This page describes controls that are actually in place today. We update it as the product evolves — no vapourware.
Every table that stores agency data has Postgres row-level security switched on. Policies scope reads and writes to the caller's agency membership, so one agency cannot see or modify another agency's workers, shifts, credentials, timesheets, invoices or audit records.
All traffic to StaffReady is served over TLS. Application data and uploaded documents are encrypted at rest by our managed Postgres and object storage providers.
Credential documents (AHPRA certificates, police checks, working-with-children checks, NDIS clearances) are stored in a private bucket. Files are namespaced by agency and worker, and access is gated by the same row-level security rules that protect the database.
Every mutation — creating a worker, verifying a credential, broadcasting a shift, approving a timesheet, generating an invoice — writes an append-only entry to the audit log. Entries record the actor, the agency, the entity, and a diff of what changed.
Users sign in with email and password. Passwords are hashed by our identity provider and never stored by StaffReady. Facility timesheet approvals use single-use magic links that expire after a short window.
Sensitive configuration (for example, Stripe API keys and webhook secrets) is held in a service-role-only table with no client-facing access policies. Only server-side code running with the service role can read it.
Full schema and data export is available on request for every agency, so you're never locked in.
Email security@staffready.com.au with details. We'll acknowledge within two business days.