Security & privacy

Your customers' calls, handled carefully

Call recordings are among the most sensitive data your business holds. This page says exactly how they are treated, and what we do not have.

transcript · masked on write

Agent: Thanks Priya, can you confirm the number ending [PHONE MASKED]?

Customer: Sure, my card is [CARD NUMBER MASKED], expiry [CVV MASKED], and the OTP is [OTP MASKED].

Agent: And the UPI ID on file is [UPI ID MASKED]?

Names stay readable on purpose: a coaching note about an unnamed agent is not much use. Best-effort, not a deterministic redaction pass.

16
classes of identifier masked as the transcript is written. Best-effort, and we say so.
01
Masking

Sixteen kinds of identifier, removed as the transcript is written

Card numbers, bank details, health information and government identifiers all get spoken aloud on ordinary calls. Masking lets QA happen without every reviewer inheriting access to all of it.

Identifiers are replaced inline while the transcript is produced, so the unmasked values are never written into an audit record.

Names are deliberately left readable.A coaching note about an unnamed agent is not much use, and the agent's identity is not the sensitive part of a call about somebody's bank account.

ai.service.ts · transcription prompt

  • Phone numbers
  • Addresses
  • Email addresses
  • Card numbers
  • CVV & expiry
  • Bank account numbers
  • IFSC codes
  • UPI IDs
  • Aadhaar
  • PAN
  • Other ID numbers
  • Dates of birth
  • OTPs & PINs
  • Passwords
  • Vehicle registrations
  • Policy numbers
The limit that matters

Masking is best-effort, not deterministic

There are two ways to remove identifiers from a transcript. Deterministic redaction applies pattern rules that either fire or do not. It is predictable, auditable, and blind to anything the patterns did not anticipate. Model-based masking is more flexible about how a number is spoken aloud, and is not guaranteed.

We use the second. It catches an account number read out in words, or a card number broken across a sentence, in ways a regex does not. It can also miss.

If you operate under a regime that requires demonstrable redaction, evaluate this against your own obligations before relying on it. We would rather lose that deal than discover the gap together afterwards.

Masking is performed by the model during transcription and is best-effort rather than a deterministic redaction pass.
the wording used on this site since the first version
02
Isolation

Scoped to your workspace, checked on every record

Every request is scoped to your organisation, and every single-record fetch is checked against it rather than trusting the identifier in the URL. Your calls are not visible to another tenant.

Inside your workspace, six roles carry different scopes. Agents see only their own calls and their own performance. There is also an external-user role restricted to its own data, for giving a client visibility into their campaign without opening the whole floor.

Nobody can create a user with more privilege than they hold, which is checked server-side rather than by hiding the option.

assertOrgAccess · audit.controller.ts

roles · scope
Adminthe whole workspace
Managerall audits, all agents
QA analystall audits, no user admin
Auditorscore calls, no analytics
Agentonly their own calls
External useronly their own data
Posture

What we have, and what we do not

Vendors in this category tend to list certification badges on the homepage. We have none, and a security page that implied otherwise would fail the first questionnaire it met.

CriterionQXAI
Per-workspace data isolationYesYesEnforced on every record fetch, not just at list level.
Role-based access controlYesYesSix roles, with privilege escalation blocked server-side.
Identifier masking in transcriptsBest-effortBest-effortPrompt-instructed, not deterministic. See above.
Card details never touch our serversYesYesRazorpay hosted checkout; we store order and payment ids only.
Sub-processors named publiclyYesYesAudits are produced using Google's Gemini API. Listed in the privacy policy.
SOC 2 / ISO 27001Not certifiedNot certifiedNo audit has been undertaken. We are not going to describe one as "in progress" to fill the row.
HIPAA / PCI-DSS complianceNot certifiedNot certifiedYou can build a scorecard that checks the disclosures those regimes require. That is not the same as us being certified, and we will not blur the two.
Single sign-on (SAML / OIDC)NoNoEmail and password only.
Two-factor authenticationNoNoNot implemented. There is a field for it in the data model and nothing behind it.
Automated data-retention deletionNoNoA retention setting exists in the admin panel and is not currently enforced by any job. Deletion is on request.
Audio recordings stored long-termBatches deletedBatches deletedFiles uploaded for a bulk campaign are removed from disk once the job completes. Transcripts and audit records are retained.

Security questionnaire or vendor assessment? Send it to us . We would rather answer it than have you guess.

Read the fine print first

The privacy policy names every sub-processor and says what we do with your data.