Security

Your customer list is yours.

You are about to hand a piece of software your entire customer list, your job photos and your invoices. There is no salesperson here to reassure you, so here is exactly how that data is kept apart from every other business's — and how you can check rather than take our word for it.

Isolation is enforced by the database, not by our code

Most software keeps businesses apart in application code: every query is supposed to include "…and only this customer's rows". It works right up until one query forgets, and then one business sees another's data.

TradeForge does it a layer lower. Every table has row-level security switched on inside PostgreSQL itself, with a policy tying each row to the business that owns it. If our application code forgets the filter, the database still refuses. The check does not depend on us getting every query right.

86tables in the database
86with row-level security on
0without it

And a new table cannot ship without it

That has to stay true for the next table someone adds, too. So the database enforces the rule itself: whenever a table is created, row-level security is switched on automatically. Nobody has to remember.

What the 86 are

We test it, rather than assume it

A rule like this can look right and still not do anything, and that kind of mistake stays invisible until the day it matters. So we test it: the test creates two real businesses with two real signed-in users, puts data in each, and checks that

The last two matter as much as the first three — being able to read someone else's records and being able to write into them are different holes, and both are closed. The test runs against the real database as ordinary signed-in users rather than as an administrator, and it clears up after itself. It last passed on 10 August 2026.

Owner sign-in has no password to steal

Owners sign in without a password: you enter your email and we send you a link that signs you in. A password we never hold is a password that cannot leak in a breach, cannot be reused from some other site's breach, and cannot be guessed.

The one exception is crew logins. A crew member you invite sets a password for their own login, because a shared jobsite phone can't always receive email. That password is held by Supabase, our sign-in provider, only as a salted hash — never in plain text, and never anywhere TradeForge can read it. A crew login can see the day's jobs and the crew's own messages; it can never reach your money, your customers, or your records.

What we do not do

What we do store in your browser

Two things, and this is the complete list:

That is the whole list. Clearing your browser storage clears both.

Who else sees anything

A page cannot load without the browser contacting whoever serves its pieces, and those companies see the request. Here is every one of them and what they get. There are no others.

WhoWhat they receiveWhy
SupabaseYour account data and your business's recordsThey host the database and sign-in. This is where your data lives.
Google FontsYour IP address and browser, when a page loadsServes the typefaces. No account data reaches them.
jsDelivrYour IP address and browser, when a page loadsServes the database client library. No account data reaches them.
StripeYour card details, if and when you subscribeHandles payment. TradeForge never sees or stores your card number.
TwilioYour business's registration details (legal name, EIN, address, phone) and the text messages your customers send and receive — only if you use a texting packageCarries text messages. US carriers require a business to register before it can text, and that registration is filed with Twilio.
Google MapsA job's address — only if you tap itJob addresses on the crew and project pages are links that open in Maps. Nothing is sent unless you tap one.

We plan to serve the fonts and that library from our own servers, which would take two names off this list. Until that is done, the list stands as written.

Getting your data out, and getting it deleted

Both are built into the database and we run them on request. Here is what each one does.

The five things we keep, and why

Five records stay behind. Each one is there for a reason that protects you as much as us, and they hold your business identifier and little else about you:

Everything else goes: contacts, jobs, quotes, invoices, photos, calls and their transcripts, crew records, compliance documents, bookings, your settings, and the account you sign in with.

Both of those are functions in the database that we run on request, not a promise somebody has to remember to keep. See the Privacy Policy for retention periods and the legal detail, and the Terms of Service for the contractual side.

What we cannot claim yet

So that nothing above reads as more than it is:

Found a problem?

Email tradeforgeoffice@gmail.com with what you found and how to reproduce it. A person will read it, usually the one who wrote the code. We will confirm what you found, fix it, and let you know when it is done.

The numbers on this page were measured against the live database on 10 August 2026. When they change, this page changes.