Security
Assay runs hiring assessments, which means it holds candidate personal data and work product on behalf of the companies that use it. This page describes how that data is protected, at the level of what we guarantee rather than how it is built.
Tenant isolation
Section titled “Tenant isolation”Every customer’s data is isolated at the database layer, not in application code.
Every table in the production database enforces row-level security, and enforcement is forced rather than merely enabled. The distinction matters: in Postgres, a table’s owning role bypasses row-level security by default. Forcing it removes that exemption, so the rule applies to every connection without exception, including our own application’s.
The practical consequence is that a query which fails to scope itself to one tenant returns nothing rather than returning another customer’s rows. Isolation does not depend on every developer remembering to add a filter.
Isolation is verified by an automated test suite that runs against a real database and attempts cross-tenant reads directly, rather than by inspection of the policies.
Authentication
Section titled “Authentication”Authentication is handled by Firebase. Kravos never receives, stores, or is able to read a user’s password. Sessions are established against a verified identity token, and every database interaction is bound to the identity of the caller for the lifetime of that transaction.
Staff access is scoped to the organisation the user is a member of, with a role attached to that membership.
Candidate voice data
Section titled “Candidate voice data”- Audio is streamed for transcription and is not stored. Candidate speech is relayed for real-time processing and is never written to disk or retained by Kravos in any form. The written transcript is what persists.
- Our speech provider is opted out of model training on this audio. This is enforced in configuration on every session, not selected per customer.
Code execution
Section titled “Code execution”Candidate code runs in an isolated, ephemeral sandbox provisioned per session and destroyed at the end of it. Candidate-submitted code never executes on Kravos infrastructure or inside our application processes.
Data in transit
Section titled “Data in transit”All traffic is served over TLS, with strict transport security enforced.
Where we are honest about gaps
Section titled “Where we are honest about gaps”Reporting a vulnerability
Section titled “Reporting a vulnerability”If you believe you have found a security issue, email info@kravos.tech. Tell us what you found and how to reproduce it. We will acknowledge and keep you updated, and we will not pursue action against good-faith research that avoids privacy violations, data destruction, and service degradation.
Security review
Section titled “Security review”For a procurement or vendor security review, contact info@kravos.tech. We can discuss architecture, data flow and controls in detail under NDA.