Security
What happens to your files
A deal's files are confidential, so this page says what TieProof does with them, as the system does it today. TieProof is not yet in service, and no customer's file has been processed. Where a control is decided and not yet in place, this page says so.
Uploads
How a file reaches TieProof
- Straight to storage
Your browser sends each file over HTTPS straight to Google Cloud Storage, with an address signed for that one file, its type and its size, which can create it only once and expires within an hour.
- Checked before it is read
The browser checks each file's type, size and count, and the server checks them again. Before reading, TieProof compares the file's bytes with its stated type and checks the package inside it.
- The same file, end to end
Your browser computes each file's SHA-256 as it uploads, and the check refuses a file whose bytes changed on the way.
- Read safely
Macros, scripts and embedded programs never run. XML is read with entity resolution and network access off, a part that declares a document type is refused, and limits on size and compression stop a file that would expand without end. Password-protected files are refused.
Retention
How long anything is kept
- Raw files
Deleted 7 days after the check ends, unless an admin of the organization chooses another number of days, from 1 to 30, for checks that end after the change.
- Working copies
The copies the worker reads are deleted at the end of every attempt, whether it succeeded or failed.
- Results and evidence
Each finding keeps the excerpts of its evidence: the values, their locations and the text around them. They stay with the results after the raw files are deleted, so a finding can still be read and defended, until you delete the check or its project.
- Deleting a check
Removes its results, its evidence and any file still stored, and the audit log records who deleted it. An admin can delete a project and every check in it.
- Deleting an organization or an account
Not yet in service: deleting an organization or an account, and exporting your data, are not yet offered on a screen. They are handled on request.
Isolation
Your organization's data stays its own
- Enforced by the database
Every read and write made for you runs in a transaction that names your organization first, and PostgreSQL's row-level security, which the application's role cannot bypass, shows it only that organization's rows. With no organization named, no row is visible.
- Membership checked every time
Each request is checked against the member's role and organization before it touches any data, and a request that names another organization's record finds nothing.
Access
Sign-in and roles
- Sign-in
Email and password, with the address confirmed before a first check, or Google. The session is held in cookies that scripts cannot read, sent only over HTTPS.
- Every request verified
The server verifies each access token's signature, issuer, audience and expiry. A password can be reset only from a recent recovery link, and a reset ends the account's other sessions.
- Three roles
Analyst, reviewer and admin, each allowed only what its role needs. Every endpoint declares what it needs, and tests hold each role to the permission table.
AI
No external AI model today
- Nothing sent to a model provider
No external AI model is configured. Every verdict is decided by deterministic code: arithmetic, units, scale and tolerances.
- Matching runs inside TieProof
To match labels, the engine uses an embedding model that runs inside its own worker and sends nothing out.
- An AI policy for each organization
An admin can set the organization's AI policy to Local only, and each check records the policy it started under. Today both settings behave the same, since no check calls an external model.
- When external AI is added
Not yet in service: the models decided are Anthropic's Claude models on Google Cloud's Vertex AI, at endpoints in the production geography, under terms that bar training on your data, with zero data retention configured. They will receive only the excerpts one task needs, never a whole file, and nothing under Local only. This page will name them as in service only once they are.
Logging and the browser
What is written down, and what the browser is allowed
- Logs
The services log identifiers, codes, counts and durations, and never a file's content, an evidence excerpt, a token or an upload address. An error is logged by its type, never by its message.
- Audit log
Decisions on findings, changes to an organization's settings and members, and deletions are recorded, and reviewers and admins can read them.
- Pages
Each page carries a content security policy of its own, may not be framed by another site, and every action that changes something checks that it came from TieProof's own pages. A signed-in user's requests are rate-limited.
Where it runs
The services TieProof is built on
The staging environment runs in northern Virginia, in the United States. The production region is not chosen yet.
- Vercel
Serves the web pages. It holds no product data.
- Google Cloud
Runs the API and the private worker that checks the files, and holds the uploaded files until they are deleted.
- Supabase
Holds the accounts and the database: organizations, checks, findings, their evidence and the audit log.
- Not engaged yet
An email provider, a payment provider, a status page and an AI model provider. Each joins the subprocessor list before it receives any customer data.
Incidents
If something goes wrong
- Telling you
If an incident exposes your organization's data or produces wrong results, your organization is told within 24 hours of its being confirmed: what happened, what was affected and what will change. Not yet in service: the procedure that carries this out, and a status page, are not in place yet.
- Reporting a vulnerability
Not yet in service: there is no address yet for reports from outside the team.
Certification
No certification is claimed
TieProof holds no SOC 2, ISO 27001 or other certification, and has not been audited for one. This page will say so until one is achieved.
More