This describes how the system is built. It is written to be checkable rather than reassuring, and it says what is not done as plainly as what is.
Tenant separation
Every record that belongs to a firm carries that firm's identifier, and every query that reads one carries it too. There is no shared pool of case data and no "global" view. A record belonging to another firm answers as not found rather than as forbidden – the difference matters, because "forbidden" confirms the record exists, and for a book of business that confirmation is itself the disclosure.
This is enforced by a check that runs on every build and fails it, not by a convention.
Encryption
In transit, everywhere. At rest for the whole store, and additionally per field for anything identifying: names, addresses, contact details, government numbers. Those use per-subject key material, so reading a database row yields ciphertext rather than a person.
Keys rotate. Old key material stays readable and stops being used for new writes, so a rotation does not orphan what was written before it. Destroying a subject's key material is what makes their data unrecoverable, and it is how deletion is implemented.
Access
Inside a firm, by role and by case assignment, both of which are deliberate acts with records. Privileged case notes have their own permission on top.
Between firms, none.
aiylum staff see about a firm and not inside one. Support that needs more happens in a bounded window, with the firm's agreement, and every read inside it is recorded and shown to the firm.
Authentication
Sign-in requires a second factor for firm staff, and the product marks anybody without one so an administrator can see. Clients sign in to their portal with a code sent to an address or number the firm recorded, rather than a password they would reuse.
Sessions are short and can be ended by an administrator.
The audit ledger
Append-only and hash-chained: each entry commits to the one before it, so a removed or altered entry breaks the chain and is detectable. There is no code path that updates or deletes an audit row, and adding one would fail the build.
Uploads
Every file is scanned before anybody can open it. A file that fails is quarantined rather than deleted, because it is evidence. Files are served through short-lived links, never public URLs, and a link is issued to somebody the system has already decided may read that file.
What we send to machine models
Case content does not leave the system without a recorded decision for that capability, and identifying values are scrubbed from prompts before they go. Every call is logged with its purpose and its cost. The provider does not train on it.
What is not there yet
Stated plainly, because a security page that lists only strengths is not one anybody should trust.
- No completed SOC 2 audit. The controls are built and the readiness work is documented; the audit has not been done.
- No penetration test report from an external firm.
- No automated test suite. Verification is a typechecker, a linter and a set of hand-written invariant checks that run on every build and fail it, plus manual testing against a running system. This is a deliberate stage-appropriate choice and it is a real gap.
- No bug bounty programme. Reports are still welcome and still acted on.
- Departments and ethical walls are not built. Firm-wide read permission reaches every case at that firm. A practice that must screen one person from one matter is not yet served.
Reporting something
security@aiylum.com. Tell us what you found and how to reproduce it. We will acknowledge within two working days and tell you what we are doing.
We will not pursue anybody who reports a genuine finding in good faith, does not access or alter other people's data beyond what proving the issue requires, and gives us a reasonable time to fix it before publishing.
---
*This page describes how the product is built and is written by the people who built it. It has not been reviewed by outside counsel.*