Privacy & retention
The data inventory
Section titled “The data inventory”| Data | Where | Encrypted | Retention |
|---|---|---|---|
| ID document images | Vault (cloud → offline archive) | Per-artifact AES-256-GCM | 30 days hot, then archive, until erasure |
| Selfie/challenge frames | Vault | Same | Same |
| Full AI extraction (incl. document number) | Vault | Same | Same |
| Minimal identity fields (names, DOB, doc type/country/expiry) | Database | At-rest platform encryption | Until erasure request |
| Status, decision reasons, hashes | Database | — (no PII) | Indefinite (your evidence trail) |
| Audit chain | Database | — (PII-light by design) | Indefinite, append-only |
| Biometric embeddings | Nowhere | — | Computed transiently, never persisted |
The retention pipeline
Section titled “The retention pipeline”capture ──► vault (encrypted, "hot") ── 30 days ──► archival job: tar bundle + hash manifest ──► offline media hot copies deleted; DB records archive ref- The 30-day hot window exists for disputes and manual review; it is a config value
(
VAULT_HOT_RETENTION_DAYS), not a magic number. - Archives are packaging, not re-encryption — blobs are already ciphertext, so the offline media is safe to transport and store.
- Restore is symmetrical (
python -m app.archival restore ver_…) for the rare regulator/dispute lookup.
How deletion actually works (and why you can trust it)
Section titled “How deletion actually works (and why you can trust it)”Traditional deletion fails at backups: the data you “deleted” lives on in last month’s archive. BAQSHI-KYC inverts this with cryptographic erasure:
- Every artifact was encrypted with its own key; only the wrapped key exists, in the database.
DELETE /v1/verifications/{id}/datadestroys the wrapped keys, deletes hot blobs, and nulls the identity fields.- Archived ciphertext — wherever it physically is — is now permanent noise. No media retrieval, no archive rewriting.
What remains after erasure: the verification’s status, its decision reasons, and the audit chain (including the erasure event itself). You keep the fact that you verified someone and the evidence of process; you stop holding what you saw.
Data subject requests, mapped to API calls
Section titled “Data subject requests, mapped to API calls”| Request | Action |
|---|---|
| “What do you hold about me?” | GET /v1/verifications/{id} + (if needed) vault artifact retrieval by the operator |
| “Delete my data” | DELETE /v1/verifications/{id}/data — done, retroactively, everywhere |
| “Correct my details” | Reviewer re-examines artifacts and records the correction via the review endpoints (audited) |
Third-party processing disclosure
Section titled “Third-party processing disclosure”One disclosure belongs in your privacy notice: document images (not selfies,
not biometrics) are sent to the AI provider (Anthropic) for text extraction and
tamper inspection under their API data-handling terms. If a deployment must
eliminate even that, swap the document model for a self-hosted one — the pipeline
interface (extract_document) is the single seam.