Security-First. Audit-Ready. Always Verifiable.
Sensitive records are protected by role and tenant boundaries, with audit histories for supported governance actions.


Governance Actions with Clear Attribution
Supported signature, voting, decision, and filing workflows retain dated audit events so authorized users can review who performed each recorded action and when.
- Governance actions recorded with actor and time metadata
- Document access, download, and edit history
- Signature and voting events with identity verification
- Compliance filing trail with status history
Every User Sees Exactly What They Should
EntityEngine's role-based access control ensures board members, admins, staff, and guests each see only what their role permits. Set permissions at the organization, team, document, or individual level. Nothing is shared by accident.
- Granular permissions per engine and per document
- Guest access with automatic expiry
- Session controls and role-aware access
- Admin override with full audit logging
Enterprise-Grade Security Throughout
Security is not a feature. It is the foundation.
Encrypted in Transit and at Rest
TLS on every connection, AES-256 at rest, Social Security Numbers under their own dedicated key, and Confidential files sealed with keys held in Google Cloud KMS.
Role-Based Access Control
Granular permissions per user, per engine, per document.
Two-Factor Authentication
TOTP and SMS two-factor authentication, available on every account, with authenticator secrets encrypted at rest.
Auditable Activity History
Supported governance actions are recorded with actor and time metadata.
Session Management
Sessions expire automatically, devices are tracked, and sessions can be revoked.
Document Watermarking
Documents shared through a public link are watermarked with recipient identity.
Data Isolation
Every query is scoped to your organization at the data layer, including AI retrieval.
Published Controls
Our full control set is published on our Trust & Security page, including where we are not yet certified.
How it actually works
Written for the person who has to sign off — a CIO, a CTO, an IT director, or whoever inherited the security questionnaire. Each control below says what it does, how it is implemented, and where it stops. Where a control has an edge, we name the edge.
Identity and session
Who is at the keyboard, and for how long.
Two-factor authenticationAvailable on every account. An organization can require it of its members.
- An authenticator app (TOTP) or SMS, chosen per account.
- The authenticator secret is encrypted at rest; recovery codes are stored as password hashes, never in the clear.
- A used TOTP counter is recorded, so a code that has already been accepted cannot be replayed.
- Factors belong to the person, not the workspace — one enrollment covers every organization they belong to.
LimitBecause the factor is account-level, requiring it in your organization means that person uses a second factor at every login, including elsewhere.
Session tokensSigned, expiring tokens bound to the user — not an opaque string.
- Access tokens are HS256-signed and valid for 8 hours.
- Refresh tokens last 30 days, rotate on every use, and are blacklisted after rotation and at logout.
- Revocation is checked when a token is used, so a logout takes effect immediately.
LimitThe 8-hour and 30-day lifetimes are fixed platform-wide. They are not configurable per organization today.
Failed-login handlingFive failed attempts locks the account for 30 minutes.
- Each failure is counted against the account and the lock is applied before the password is checked again.
- A successful login clears the counter and the lock.
- Last successful and last failed login are retained on the account.
Authorization gates
One gate shape, applied the same way everywhere.
Default denyAn endpoint requires authentication unless it is explicitly justified as public.
- The production API default is authenticated access; a new endpoint is protected because of the default, not because someone remembered.
- Public endpoints are limited to marketing pages, health checks, and pre-account formation steps.
- Third-party callbacks are signed: the signature is mandatory, and each endpoint keeps its own idempotency receipt so a replayed event cannot fulfil twice.
Role checks read the per-organization rowPermission comes from your seat in that organization, never a global profile field.
- Every gate queries the access row for that person in that organization, and filters it to active seats.
- Removed people are deactivated rather than deleted, so an unfiltered check would be a privilege-escalation bug — the filter is part of the convention, not an option.
- Three buckets cover the platform: owner-only for billing and ownership, administrator for standard administration, governance-read for packets, decisions, and signatures.
Denials say what was requiredA refusal returns a structured reason, not a blank 403.
- The response names the role the action needed, so the interface can explain the refusal instead of failing silently.
- The interface mirrors the same buckets for what it shows. It never decides access — the server does.
Tenant isolation
The boundary between your organization and every other one.
Every query is scoped to the organizationScoping happens at the data layer, on the way in.
- Endpoints that take an organization id verify membership before reading anything.
- An organization supplied in a request header is verified the same way. A header is a claim, not an authorization.
- A wrong-organization lookup is indistinguishable from a missing one: it returns nothing rather than confirming the record exists.
LimitThis is row-level scoping in one logical database, not a separate database per customer. We would rather you know that than infer it from the word “isolation”.
Isolation is tested, not assertedTenant-isolation and access-control tests gate deployment.
- The suite carries tests written specifically for cross-organization reads, including through AI retrieval paths.
- An authorization fix ships with a regression test that fails without it — that test is what separates a defect from an opinion.
AI boundaries
The question most reviewers actually came here to ask.
Your content never trains a modelNot ours, not Google’s, not a third party’s.
- AI features run on Google Cloud Vertex AI (Gemini) under enterprise terms, in United States regions.
- Those terms prohibit training on customer content. It is a contractual boundary, not a setting we toggle.
Retrieval is filtered before the model sees anythingMaterial you are not cleared for is never retrieved, rather than retrieved and withheld.
- Each organization has its own retrieval corpus. A query is scoped to your organization first.
- It is then filtered to what the person asking is cleared to see, before any content reaches the model.
- When a role cannot be resolved, the most restrictive clearance applies.
Clearance follows governance, not job titleA committee seat does not make someone a board member.
- Board context comes from a board, chair, or secretary seat — not from sitting on a governance committee.
- Guests and advisors receive no ambient organization context at all, in any AI surface.
- The same access contract governs the assistant, document chat, and memory recall, so a new surface cannot invent a looser rule.
Some values never enter a promptSocial Security Numbers and payment details are excluded from prompts and corpora.
- They are held outside the records the AI layer reads, so exclusion is structural rather than a filter that has to fire.
LimitWe are not end-to-end encrypted and do not claim to be. The platform must be able to read content in order to reason over it.
Data protection
In transit, at rest, and the records that get their own keys.
EncryptionTLS on every connection; encrypted at rest with Google Cloud’s managed encryption.
- No unencrypted transport, internal or external.
- Storage encryption is managed by the platform, including database and object storage.
SecretsHeld in Google Secret Manager with per-purpose keys, injected at deploy.
- Credentials, API keys, integration tokens, and authenticator secrets are never in source control.
- A deploy fails when a newly required key is missing, rather than starting without it.
Confidential filesEach file is sealed with its own AES-256 key, and that key is locked by a master key in Google Cloud KMS.
- The stored object is ciphertext, so a copy of file storage or its credentials alone does not reveal the file.
- Opening a file needs a fresh one-time code each time; every master-key use is recorded in Cloud audit logs.
- Confidential files are kept out of AI memory, previews, and share links.
LimitThe platform holds the master key so it can serve files to the people you name and support recovery. This is strong encryption at rest, not end-to-end encryption.
Taxpayer identifiersThe responsible party’s SSN or ITIN is encrypted under its own dedicated key, then purged.
- It lives in its own field, separate from the rest of the application record, and is decrypted only to prepare the filing.
- A keyed hash lets the IRS one-responsible-party-per-day limit be counted without decrypting anyone’s identifier.
- Only the last four digits are ever displayed, and they are all that survives once the EIN is issued.
Files the platform did not create
Anything a person uploads is treated as hostile until it clears.
Malware scanning, fail-closedA file that cannot be scanned does not ship.
- Files that can be shared or imported are scanned before they leave the platform.
- The scanner is the only writer trusted to record a scan result. Retained governance documents reject ordinary saves that touch scan state, so a clean result cannot be forged through the application path.
- A password-protected PDF cannot be scanned, so it is refused with that reason instead of being passed through.
Uploads are bounded before anything parses themSize, archive, and image limits apply ahead of extraction.
- 25 MB a file; archives capped at 5,000 entries and 100 MB expanded; images capped at 100 million pixels.
- Type is checked by content, not by the filename.
- Those caps exist for archive and decompression bombs, which arrive looking like ordinary documents.
Public share linksA document shared by public link is watermarked with the recipient’s identity.
- The watermark is applied to the rendition the link serves.
- Link access is recorded alongside the document’s other audit events.
LimitWatermarking applies to public share links, not to every download inside the platform.
Build, deploy, and response
What stands between a commit and your data.
Gates on every changeSecret scanning, static analysis, dependency audit, and review — all required.
- Secret scanning runs on every commit locally and again in CI, with a separate guard that blocks tracked environment files.
- Static analysis (Bandit) and dependency vulnerability scanning (pip-audit) run on every pull request.
- Code review is required before a change reaches production, and protected branches enforce the required checks.
Rollback is the first responseThe documented first move in an incident is to revert, not to debug forward.
- Hosted on Cloud Run with managed autoscaling and health-gated deploys; traffic shifts only after health is verified.
- Managed PostgreSQL with automated backups and point-in-time recovery.
- Revert to the last known-good release first; diagnose after the bleeding stops.
Disclosure and notificationReport to security@entityengine.ai; acknowledged within 3 business days.
- We do not pursue legal action for good-faith research conducted under that policy.
- Affected customers are notified without undue delay, and within any deadline the applicable state breach-notification law sets.
- For material incidents we publish a post-incident summary.
Where we stand today
- SOC 2
- Not certified today. We will walk through our controls in detail on a call.
- Data residency
- United States only, including every subprocessor.
- PCI DSS
- Card data is handled entirely by Stripe. We never receive full card numbers.
- DPA
- A Data Processing Addendum is available on request.
- Subprocessors
- Published, with 30 days’ notice before any change.
This page describes how the platform works. The asserted control set — including where we are not certified — lives on Trust & Security. Security questionnaires, Data Processing Addenda, and architecture questions: security@entityengine.ai.
Security without compromise.
EntityEngine protects your most sensitive organizational data with enterprise-grade controls.