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.