Skip to content

Data classification

Sensitivity tiers and how each class is protected in production. This describes engineering controls, not legal or compliance certification.

Summary

Data typeSensitivityProtection
Candidate name, email, location, profilePIITenant-scoped API; email plaintext for lookup
Candidate phonePII (higher)AES-256-GCM field encryption in MongoDB
Resume filePIIPrivate S3; presigned HTTPS URLs only; SSE-S3 at rest
Resume extracted textPIIMongoDB; omitted from default candidate queries; copied into interview snapshots
Team user name, emailPIITenant-scoped API; Firebase for auth
Passwords, join/invite/session tokensCredentialsHashed (SHA-256); plaintext only in email/link at send time
Transcript, AI report, proctoringSensitiveTenant-scoped queries; no field-level encryption
Recordings, room URLsSensitiveStored on interview document; access via authenticated flows
Org settings, positions, notesInternalTenant-scoped; notes soft-deletable
Credit ledger, balancesInternal / financialTenant-scoped; ledger append-only
Health check, public web configLowNo tenant or candidate content

Encryption

  • In transit: HTTPS for browser, API, S3, and Atlas; secure headers on API responses.
  • At rest (app): Field encryption on candidate phone only (enc:v1: prefix, key from FIELD_ENCRYPTION_KEY).
  • At rest (infra): Atlas TLS; S3 default encryption on the resume bucket.
  • Hashed, not encrypted: passwordHash, joinTokenHash, inviteTokenHash, accessPasswordHash, candidateSessionHash.
  • Logging: Structured logs redact common PII paths; do not log tokens, resume text, or full LLM payloads.

See Data lifecycle for retention and deletion behavior.

Sophia AI Interview Platform — Internal Documentation