Skip to content

Security

Financial data deserves financial-grade restraint.

This page describes what we do today, in specific terms. It avoids marketing language on purpose. When something is not yet in place, it says so.

Control path

Running

  1. Request · sensitive action

    pending

    A member deletes a raw file

    The request arrives with the session cookie (HTTP-only, origin-bound) and the member's workspace context.

  2. Workspace isolation

    pending

    Row-level security filters the query

    The database itself restricts the query to the member's workspace. Application code cannot bypass the policy by accident.

  3. Private storage

    pending

    The object lives in a private bucket

    Under the workspace prefix, read only through short-lived signed URLs. Deleting removes the object; it is not merely hidden.

  4. AAL2 · step-up

    pending

    A recent second factor is required

    Sensitive actions need a recent TOTP verification (AAL2), not just a valid session.

  5. Audit event

    pending

    Actor · action · object · time

    The deletion is recorded with its author and timestamp, alongside rule confirmations, decisions and member changes.

Each control exists in the code today and is exercised by the automated tests.

Architecture

The path a document takes, and the control that applies at each step. Every property below is implemented today.

  1. Browser

    Session cookie, HTTP-only, scoped to the origin.

    Implemented
  2. Workspace boundary

    Row-level security: every query is filtered to your workspace at the database, not only in the app.

    Implemented
  3. Private storage

    Files in a private bucket under your workspace prefix. Signed, short-lived access. Deletable on demand; auto-deleted on schedule.

    Implemented
  4. Extraction

    A model proposes billing terms from the agreement text. Proposals are labelled and stored apart from rules.

    Implemented
  5. Human-confirmed rules

    Only a person turns a proposal into a rule. Versioned, dated, attributed.

    Implemented
  6. Deterministic calculation

    Integer arithmetic, rounded once, every step recorded. Replayable from stored inputs.

    Implemented

Each control below exists in the codebase and is exercised by the automated test suites. Verification against the hosted production environment is part of the launch gate and is not claimed here.

Tenant isolation

Every business record — agreements, rules, uploads, findings, decisions — carries a workspace identifier. Access is enforced with row-level security in the database: a query only returns rows belonging to a workspace the signed-in user is a member of. Application code cannot bypass this by mistake, because the database applies the policy regardless of the query.

Elevated service credentials are used only server-side for payment webhooks and scheduled jobs, never from the browser.

Storage and retention

  • Uploaded files are written to a private storage bucket by the server. There are no public objects.
  • Files are read through short-lived signed URLs generated for the requesting member only.
  • You can delete any raw file immediately. Deletion removes the object from storage; it is not merely hidden.
  • Raw files that you have not deleted are removed automatically after 30 days.
  • Confirmed billing rules, findings, their calculation inputs and steps, and your confirm/reject decisions are retained while the preflight exists, so every result can be replayed and audited.

AI boundary

A language model is used for two narrow tasks: extracting candidate billing terms from an agreement, and proposing which invoice line might correspond to which concept. Its output is validated, labelled as AI-proposed, and stored separately from confirmed rules.

  • Nothing the model proposes affects a financial finding until a person confirms it.
  • The model never calculates money. All amounts are produced by a deterministic engine from confirmed rules and imported evidence, in integer minor units, with every step recorded.
  • Agreement text is sent to the AI provider from our servers only, over encrypted connections, for the duration of the request.

Analytics and monitoring

We record product events (a preflight was created, a rule was confirmed) and application errors so we can keep the service working. These events carry identifiers and timings, not content. Contract excerpts, invoice lines, amounts and file contents are excluded from analytics and error reports.

Access and sessions

  • Authentication is handled by our identity provider; passwords are never stored by us in plain form.
  • Sessions are cookie-based, HTTP-only, and scoped to the truviate.com origin.
  • Workspace membership determines what a user can see and do. Removing a member revokes their access immediately.
  • All traffic uses TLS in transit.

Multi-factor authentication and step-up

  • Time-based one-time password (TOTP) multi-factor authentication is enrolled before the first document upload.
  • Sensitive actions — member management, security settings, workspace deletion — require a recent second-factor verification (AAL2 step-up), not just a valid session.
  • Active sessions are listed in the security settings and can be revoked individually.

Audit trail

  • Rule confirmations, finding decisions, membership changes and deletions are recorded with who acted and when.
  • Findings keep their calculation inputs and steps, so any result can be replayed from stored data.

Retention and purge

  • Raw uploads can be deleted immediately by a member and are purged automatically after the retention period.
  • Deleting a workspace removes its records; the last owner cannot be removed by accident.

Implemented today, and what is still being finalized

Implemented in the application and exercised by automated tests
  • Tenant isolation
  • Storage and retention
  • AI boundary
  • Multi-factor authentication and step-up
  • Audit trail
  • Retention and purge
Being finalized for production
  • Verification of the hosted production configuration (auth hooks, rate limits, bot protection) as part of the launch gate.
  • Transactional email delivery from a verified sending domain.
  • An independent third-party security review.

What we don’t claim yet

Truviate has not yet completed a third-party security certification or independent audit. We would rather say that plainly than borrow a badge. The controls above are the ones actually in place; if you need something specific for your own review, ask and we will answer directly.

Responsible disclosure

If you believe you have found a security issue, write to support@truviate.com with enough detail to reproduce it. We acknowledge reports promptly, keep you informed while we investigate, and do not pursue researchers who act in good faith.