Where your data lives

You're trusting us with your whole company's books. Here's exactly how that trust is engineered — in plain language, and limited to what we can actually demonstrate.

Version 2026-09-06 · Last updated September 26, 2026

Your company runs on its own private instance: your own database, your own file storage, isolated from every other customer. There is no shared database for a single bug to spill.

The architecture is the security

Most construction platforms put every customer into one giant shared database, separated by software rules. SelfConstruct provisions a complete, separate system per company — its own application service, its own database file, its own storage volume, and its own session-signing secret. There is no customer-id column to get wrong, because no other company's data exists inside your instance. A problem in one instance is contained to that instance.

🔒 Backups sealed so even our servers can't read them

Offsite backups are encrypted with public-key cryptography (X25519 + AES-256-GCM). Your instance can create a sealed backup but can never open one — the key that decrypts lives offline with the operator, never on any server. A stolen backup file is noise. Each backup bundle contains your database and your uploaded files, and our restore tool checks a restored copy for database integrity, confirms your records are present, and confirms the ledger's debits still equal its credits.

📱 Two-factor authentication

Office logins support authenticator-app codes on top of the password — for the company admin credential and for individual team logins. One phished password is no longer enough to open your books.

🔑 Who at SelfConstruct can get in

We don't sign in to your instance unless you open a support window for us. You open it from Settings with a reason and a time limit, it expires by itself, you can revoke it at any time, and every sign-in we make through it is written into your own activity feed.

Until you replace the starting password you were given, we know it — replace it under Settings → Users & Security when you first sign in. And like any host, our infrastructure administrators could technically reach the server your instance runs on: your live database sits on a hosting volume we administer, and it is not sealed there the way your offsite backups are.

🔐 Encrypted in transit, hardened at the door

HTTPS on every connection — our .app domains are HSTS-preloaded, so browsers refuse plaintext outright. Passwords are stored as salted PBKDF2-SHA256 hashes (600,000 rounds, the current OWASP figure; older hashes are re-stored at that cost on the next sign-in). Login and portal-code guessing hits automatic lockouts. Uploaded files serve under unguessable names with signed, expiring links. Changing a password immediately ends the sessions that were using the old one, and deactivating a team member ends their access on their next request rather than whenever their session happens to expire.

👀 Portals see only what you share

Clients, crews, and subs each enter through their own scoped door, and every portal query is restricted to the specific job that door belongs to. A client sees their job's shared progress — never your costs, margins, or other clients. Internal notes and cost data never render on client-facing pages.

💳 We never store card numbers

SelfConstruct does not process card payments and never receives cardholder data. Payment methods appear in your settings only as labels you type, like "Visa •4421".

🏦 We never hold your banking credentials

Bank transactions come into SelfConstruct the old-fashioned safe way: you download an OFX/QFX or CSV statement from your bank and upload it. There is no bank login, no stored password, and no third-party aggregator connection — so there is no banking credential of yours for anyone to steal from us.

🚪 Leave with everything

Your data is a company asset, not a hostage. You can take a full company export yourself at any time — Settings → Your data → Full company export builds a zip holding a byte-for-byte copy of your database, every uploaded file, every table as CSV, and a manifest with a checksum for each one. When you cancel we also provide that copy directly, then delete your instance and its storage. Encrypted offsite copies then age out of retention on their normal schedule rather than disappearing the same day.

How backups actually work

Being specific here matters more than sounding impressive:

Honest limits

No vendor should tell you they're unhackable — anyone who does is selling something else. Some specifics we'd rather you hear from us than discover later:

What we can tell you: the architecture contains failures instead of amplifying them, the backups are useless to a thief, and there's a written plan for the bad day. Questions we haven't answered here: hello@selfconstruct.app — you'll get an engineer's answer, not a brochure's.

See pricing →   Who else touches your data →