Security

Your partner data, handled like money

TrueUp is built on one rule: AI may describe your columns, but only code decides the money. Here is what that means in practice.

Only the columns that matter

Reconciliation needs an identifier, a date, an amount and optionally a status. No names, emails or addresses — drop every other column before uploading.

Two walls between customers

Every query is scoped to your organisation in the application, and again by row-level security in Postgres under a role that cannot bypass it. A missed filter in code still cannot read another customer’s rows.

AI never touches the numbers

A model may be asked which column is which, from headers and a sample. Its answer is validated against a closed schema and proven against your real ids before use. Matching and every figure come from deterministic code.

Results you can audit

A run is immutable. The same files and mapping always produce the same rows, every row appears exactly once, and the causes sum to the difference to the cent — checked before anything is saved.

Sessions done carefully

Passwords are hashed with scrypt. Sessions are random 256-bit tokens in an httpOnly, SameSite cookie; the database stores only a hash of each token. Sign-in is rate limited and never reveals whether an email has an account.

Exports that are safe to open

CSV exports are hardened against spreadsheet formula injection, so a hostile value in a partner file cannot run in Excel.

Security · TrueUp