Security
Your electricity data is commercially sensitive. Here is exactly how we protect it.
Infrastructure
- Application hosted on Google Cloud Run in australia-southeast1 (Sydney). All project data stays in Australia.
- HTTPS enforced on every connection — no unencrypted data in transit.
- Containers are stateless and isolated. Each request runs in a fresh context.
- No customer data is written to application logs.
Data storage
- PostgreSQL database hosted in Sydney with encryption at rest (AES-256).
- Uploaded bills and consumption files are stored as encrypted database records, not on a shared filesystem.
- Database connections use SSL and are restricted to the application service account.
- Backups are encrypted and retained for 7 days.
Authentication
- Powered by Firebase Authentication. Supports email/password with mandatory email verification.
- Session tokens are validated server-side on every API request.
- Password requirements: minimum 10 characters, mixed case, number, and symbol.
- Rate limiting on login and signup endpoints to prevent brute-force attacks.
Access control
- Role-based permissions: users only see projects belonging to their company.
- Admin and global admin roles are separately authenticated and audited.
- Company invitations are controlled by company administrators with email verification.
- Feature-gated access: AI bill extraction requires Pro tier, enforced server-side.
AI bill processing
- Bill images are sent to Anthropic Claude over encrypted HTTPS connections for tariff extraction.
- Anthropic does not use API inputs for model training and does not retain bill images after processing.
- Extracted data is validated through a multi-stage normalisation pipeline before being stored.
- Identifying information (business name, address, NMI, account numbers) is stripped before any anonymised data is used for estimate improvements.
Responsible disclosure
Found a vulnerability? Email security@amperage.app with details and reproduction steps. We acknowledge reports within 2 business days and aim to resolve confirmed issues within 14 days. Please do not publicly disclose until we have had a chance to respond.