SECURITY

Security enforced at the database layer

Authentication is only the first layer. DataShowing is built so that company boundaries, the AI and the API are all constrained by design — not by hoping the interface behaves.

Tenant isolation with row-level security

Company boundaries are enforced in the database, not just the UI. Every company-owned table is protected by Postgres row-level security policies plus organization membership checks, so a bug in the interface cannot leak one company’s rows to another.

Least privilege by role

Access is scoped to four roles — owner, admin, analyst and viewer. People see only what their role and company membership allow.

AI kept read-only and auditable

At launch the AI cannot change your data. It explains each number, shows the calculation it performed and cites the dataset it used. There are no data-changing agent actions, so analysis cannot quietly mutate the source of truth.

Admin separation

Platform administrators are explicit, separate accounts — distinct from customer accounts — so operational access is not mixed into tenant data.

Scoped, revocable API keys

API keys are scoped per company, validated server-side, logged with usage counters, and revocable instantly. Hard plan limits cap runaway traffic.

Audited sensitive actions

Sensitive actions leave an audit trail, so changes and access can be reviewed after the fact.

Honest by default. Where a capability is deliberately limited for safety — like the read-only AI — we say so rather than overpromising. See use cases and alternatives for where DataShowing fits.