Built to be
trusted with your SIN.
Most security pages ask you to take their word for it. This one shows the architecture and states every control we actually run — including the things we deliberately don't do.
- AES-256 + TLS 1.3
- Read-only
- One Canadian bureau — reporting not yet active
- PIPEDA + Law 25
Last updated · April 2026/For procurement questionnaires or a signed copy of this document, email security@elitetenants.com.
System architecture
Elite Tenants is a Next.js 14 application deployed on a serverless edge network. There are no long-running servers — every API request spins up an isolated serverless function, executes, and terminates. This eliminates entire categories of server-level vulnerabilities (SSH exploits, persistent malware, privilege escalation).
Encryption
Access controls
- No direct database access from the client. All database reads and writes go through authenticated server-side API routes. The database service-role key never leaves the server.
- Every API route verifies the session token before touching any data. Unauthenticated requests return 401.
- Users can only access their own data. Every query is scoped to the authenticated user's ID. There is no way to request another user's records.
- Admin routes are double-gated. Middleware checks the admin role claim, and each admin API route re-validates the role independently.
- Admins require MFA. Every admin account must have multi-factor authentication enabled (TOTP authenticator app). Admin routes that write data additionally verify the MFA claim is present in the session token — a stolen admin password alone cannot modify data.
- Lease documents use signed URLs that expire after 60 minutes. There is no permanent public URL for any lease file.
- Payment webhooks are signature-verified. We reject any webhook that doesn't include a valid provider signature to prevent spoofed payment events.
Fraud detection & review
Because rent payment data is recorded to credit-bureau standard and will be furnished to a Canadian credit bureau once reporting is active, a fraudulent tenant could theoretically inflate a credit file by misrepresenting a non-rent transaction as rent. We operate a five-signal risk engine that evaluates every detected payment before it enters the reporting pipeline.
- S1Category blacklist. Transactions categorized by the bank-data provider as mortgage, car loan, or student loan payments are auto-rejected — they cannot be reclassified as rent.
- S2Account-holder name collision. We compare the tenant-reported landlord name against the transaction counterparty name using Jaro-Winkler similarity. A high match (suggesting self-payment) flags for manual review.
- S3Matcher confidence floor. Any payment below our rent-matcher's confidence threshold is flagged, not reported, even if other signals are clean.
- S4New-tenant scrutiny. First three months of a tenant's payment history receive tighter thresholds; a clean track record relaxes them.
- S5Manual review queue. All flagged payments land in an admin adjudication surface with the full transaction category, counterparty name, match confidence, and historical context. Only a reviewer can promote them to "Reported" status. Payments rejected in review are never sent to the bureaus.
Audit logging
Every privileged action writes to one of two append-only audit tables. Neither table has a DELETE endpoint exposed — records can only be added.
Backup & business continuity
- Automated daily backups of the primary database, retained per our cloud provider's standard backup policy for our plan.
- Migrations are version-controlled. Every schema change is written as idempotent, version-controlled SQL and applied through a reviewed process.
- Infrastructure as code. Application configuration and database migrations are version-controlled. A total-loss rebuild is measured in hours, not days.
- Stateless compute. Because serverless functions hold no state, a hosting outage redirects traffic automatically across edge regions with no data risk.
Incident response & breach notification
We maintain a written incident response plan covering detection, containment, eradication, recovery, and post-incident review. Key commitments:
- PIPEDA-aligned breach notification. In the event of a breach involving real risk of significant harm, affected individuals and the Office of the Privacy Commissioner of Canada are notified as soon as feasible — our internal target is within 72 hours of confirmation.
- Runbook-driven response. Incident categories (data exposure, credential compromise, vendor outage, fraud incident) have predefined response steps covering roles, escalation paths, and evidence preservation.
- Plan review cadence. Runbooks are reviewed and revised as our architecture evolves, with incident learnings folded back in after each event.
- Active-incident disclosure. Any incident materially affecting availability, data integrity, or user data is communicated directly to affected customers via the email on their account, in addition to any regulatory notifications required.
Responsible disclosure
Security researchers are welcome. If you believe you've found a vulnerability in Elite Tenants:
- Email security@elitetenants.com with details and reproduction steps.
- Do not publicly disclose the issue until we've had a reasonable window to investigate (we target acknowledgement within 72 hours).
- Do not access, modify, or exfiltrate data that isn't your own. Use your own test accounts.
- No automated scanning against production (credential-stuffing lists, DDoS, etc.).
We don't currently run a paid bug bounty, but we publicly acknowledge valid reports with the reporter's consent.
What we store and where
| Data type | Where stored | Retention |
|---|---|---|
Identity Full name, email, phone number | Encrypted cloud database | Until account deletion, then 30 days |
Rental details Address, monthly rent, landlord name, lease start date | Encrypted cloud database | Until account deletion, then 30 days |
Lease document PDF or image of signed lease | Encrypted cloud storage — private bucket, signed-URL access only | Until account deletion, then 30 days |
Bank connection Institution name, last 4 digits of account, encrypted bank-connection token | Encrypted cloud database (token encrypted). Full credentials never stored. | Token revoked and deleted on account deletion |
Payment history Month, amount, on-time/late status, reporting date | Encrypted cloud database | 7 years (Canadian tax law requirement) |
Subscription Plan type, status, billing customer ID | Cloud database + payment processor | Anonymized and retained 7 years for tax records |
Auth sessions Session tokens, device info | Authentication provider (never touches our database) | Auth-provider session TTL (30 days inactive) |
Card / banking credentials Card numbers, bank login credentials | Never stored by Elite Tenants. Handled by our PCI-compliant payment and bank-connection providers. | N/A |
Vendor security certifications
Every third-party provider in our stack holds independent security certifications. We don't build what we can safely buy from a certified provider.