Your company's data, walled off and enforced by the server.
Your quotes, client lists, pay rates, and job photos are the most sensitive things in your business. Here's how Paint Portal protects them — in plain English, without the marketing fog.
Isolation you don't have to trust — it's enforced
Every private record in Paint Portal belongs to one company and is readable only by that company's people. That isn't a setting or a promise in the screens — it's enforced on the server by Firestore and Cloud Storage security rules that run on every read and write. A request for another company's records is refused before it reaches the database.
Two deliberate exceptions, so you know exactly where the walls are: a small number of Paint Portal support accounts can open any company's records to help its owner, and files the app shares as a link, such as a photo in a client's quote, open for whoever holds that link.
What makes this different: those isolation rules are covered by an automated test suite, including a sweep that tries to read across companies, and it runs on every proposed change and every update to the main code line. Our release tool won't publish while the latest run is failing, and overriding that requires a written reason. Security you can't see is easy to claim and hard to keep — so we wired ours to a tripwire.
Signing in
Authenticator-app sign-in codes
Required for company owners and admins from beta launch. From then on, signing in to those accounts takes a code from an authenticator app as well as the password, so a stolen password alone won't be enough.
Roles checked on the server
Each person's role decides what they can see and change — and it's checked on the server for every request, not just hidden in the app.
Removing someone closes every door
Removing a team member takes away their company access and revokes their sessions, so they're signed out of every device within the hour.
Accounts by invitation
During the private beta, new companies are set up only by our team, and people join a company only by invitation. Our servers enforce both, whatever sign-in method is used.
Limits on sign-in emails
Password-reset and verification emails are capped per hour, and a reset request never reveals whether an email address has an account.
The client portal
When you send a quote or invoice to a homeowner, they open it through a private link — not a full account — and see only their own project. Before the portal opens, they enter the email address it was sent to and a one-time code we email them. They can choose to have a device remembered for 30 days.
Wrong guesses are counted on the server: 5 wrong codes or 10 wrong email addresses locks the link for 15 minutes, so it can't be guessed into. You can switch off a client's link at any time, and links expire on their own. If you want an extra step, you can also ask clients for a PIN.
How your data is protected
Encrypted in transit
Everything between your device and Paint Portal travels over HTTPS, and browsers are told never to connect to us any other way.
Encrypted at rest
Data stored in Firestore and Cloud Storage is encrypted at rest by Google Cloud, where Paint Portal runs.
Daily backups
The database is backed up every day and can be restored to any point in the last 7 days.
Limits on uploads
The server only accepts uploads declared as photos, PDFs, office documents or job videos, and only up to a size limit.
Secrets kept out of the code
The keys Paint Portal uses to talk to other services are kept in Google Secret Manager, not in the app's code.
An audit trail for admin actions
Sensitive admin actions — role changes, removals, accepted invites, ownership changes and project deletions — are written to a log that only the server can add to.
Payments and accounting
Verified payment messages
Payment events from Stripe are signature-verified before we act on them, so a forged "you got paid" message is rejected. QuickBooks messages are verified the same way.
Encrypted accounting credentials
When you connect QuickBooks, its access tokens are stored encrypted and can't be read from the app. Disconnect and we delete them and ask QuickBooks to revoke them.
How we build it
Tested on every change
The isolation rules have their own automated test suite, run on every proposed change, so a regression can't quietly open a door.
Third-party code scanned
The open-source packages Paint Portal depends on are checked weekly for known vulnerabilities, and the automated build fails on any high or critical one in the packages the app ships, unless it has been reviewed and recorded with a reason.
Standard browser protections
The app can't be framed inside other websites, browsers aren't allowed to guess file types, and other sites you visit from the app see only our address, not the page you were on.
What we never do
- We never sell your data. Not to advertisers, data brokers, competitors, or industry aggregators.
- We never expose your numbers to other users. Your pricing, client lists, and financials stay inside your company.
- We never use your business data for targeted advertising.
The full detail lives in our Privacy Policy.
Your data is portable
Because it's your data, you can take it with you. Your clients, suppliers, invoices and payroll hours export to CSV, and your A/R aging prints or saves as a PDF, any time. For a full copy of everything, projects and quotes included, emailsupport@trypaintportal.comand we'll send it in a machine-readable format such as CSV or JSON.
Honest about the rest
No system is perfectly secure, and we won't pretend otherwise. We keep these claims to what Paint Portal actually does, and every one is checked against the app before it goes on this page. Before beta launch the whole app goes through a full security audit, and what it finds is fixed. If you find something that looks off, tell us atsupport@trypaintportal.comand we'll take it seriously.
Built to keep your business yours.
Try it on a real job and see how it handles your numbers — and read ourguarantee while you're at it.
Request access