HOW YOUR DATA IS PROTECTED
The five protections in production today.
These are not aspirational — every claim below is verifiable in our running infrastructure or in the linked provider trust pages further down.
Encryption at rest — AES-256
All customer data stored in our database, plus uploaded contracts and property photos, is encrypted at rest using AES-256 by our infrastructure providers (Render Postgres and Cloudflare R2). Sensitive tokens in our database — Gmail/Outlook OAuth tokens and SMTP passwords — are additionally encrypted with a per-deployment key before storage, so even DB read access cannot recover them.
Encryption in transit — TLS 1.3
Every connection between your browser/app and our servers is protected with TLS 1.3, terminated at Cloudflare. We do not accept plain-HTTP traffic. Internal communication between our backend services and the database runs on a private network — your data never traverses the public internet inside our infrastructure.
Strong authentication
Passwords are hashed with bcrypt (cost 12) — we cannot read your password, and a database breach would not expose them. Sessions use short-lived (15-minute) access tokens with refresh tokens that are themselves bcrypt-hashed at rest. Google Sign-In is fully supported via OAuth 2.0; password resets use single-use tokens that expire in 30 minutes. Every email/password signup goes through email verification — we email a single-use link the user must click to confirm the address; Google sign-ups inherit verification from Google OAuth.
Audit trail on every change
Every meaningful action — task status changes, contact edits, document uploads, draft sends, transaction lifecycle, deadline adjustments — is recorded in an immutable activity log against the user who performed it. Available to you in the Activity tab of every transaction.
Your contracts and documents stay private
Every contract you upload is stored on enterprise-grade private storage (Cloudflare R2) under a random, unguessable filename — never a public URL anyone could stumble onto. When you open a transaction, we generate a fresh, one-time link that only works in your browser and stops working after one hour. So even if you accidentally shared the link, it would be expired by the time anyone tried it. Every contract view and document download is re-checked against your login — there's no way to access a file without being signed in as you. We only accept the file types you'd expect (PDFs for contracts; PDF, JPG, or PNG for other documents and photos), and we verify each file's actual contents — not just its name — so a mis-labeled or unexpected file can't slip through.