Security & PII posture

Honest about what's in place.

Bureau is a young, bootstrapped startup. We've put serious engineering into security from day one — and we'll be candid about what we haven't built yet. The next sections walk through both, plainly, so a security team can make an informed decision before signing up.

Architecture

Tenant isolation enforced at the database, not the application.

Postgres row-level security

Every tenant-scoped table — articles, journalists, beats, runs, llm_calls, tenant_secrets, tenant_dek, voices, task_assignments, sources, podcasts, episodes, subscribers — has an RLS policy: tenant_id::text = current_setting('app.current_tenant_id', true). The middleware sets that variable from the request's resolved tenant. A buggy handler can't leak across tenants.

Envelope-encrypted credentials

Master KEK in environment (loaded via systemd EnvironmentFile). Per-tenant DEK generated at tenant creation, encrypted by KEK, stored in tenant_dek. Provider keys (Gemini, OpenAI, Anthropic, Perplexity, ElevenLabs) encrypted by tenant DEK in tenant_secrets. AES-256-GCM with random nonces. Decrypt at use time, never logged.

Account security

Sign-in choices, with MFA on for the ones that matter.

Tenants pick the sign-in flow that fits their team. Every account supports password reset by signed email link; Google sign-in skips the password entirely; TOTP-based two-factor authentication is available on every account, and ten one-time recovery codes are generated when MFA is enrolled so a lost phone doesn't lock anyone out.

Email + password

Argon2id-hashed passwords (memory-hard, side-channel-resistant). Lost-password flow uses a signed token mailed to the verified address; tokens expire in 30 minutes and are single-use.

Google sign-in

OAuth 2.0 with state-bound CSRF tokens. We never see the Google password. The first sign-in establishes the account; subsequent sign-ins skip the password screen entirely.

Two-factor (TOTP)

Standard authenticator-app support — 1Password, Authy, Google Authenticator, etc. Once enrolled, every sign-in adds a six-digit code step. Ten one-time recovery codes are issued at enrolment and stored as Argon2id hashes; each is consumed on use.

PII posture

Brief and discard.

When the Brief tier reaches into your Gmail, Slack, or CRM, the raw payload is briefed by the LLM, the brief is kept, the raw is dropped. You can opt into payload retention per source — but the default is "the journalist's framing of what happened, not the underlying data."

What stays

Briefs, summaries, source metadata (timestamps, item counts), aggregate cost telemetry, structured logs of every credential read.

What goes

Raw email bodies, Slack messages, deal notes, PR diffs, calendar attendees beyond their name. Dropped after the brief is composed.

Opt-in retain

Per-source flag: retain_payloads = true keeps the raw payload for re-briefing later (useful for Postgres or Webhook sources where the payload is the data, not PII).

Compliance, plainly

What we have, what we don't, and what's next.

Bureau is a young, bootstrapped startup. We won't claim a SOC 2 audit, an ISO certification, or a formal pen-test program until we have one to show you. Here is the honest picture.

In place today

What we've built

  • Per-tenant database isolation (Postgres RLS)
  • AES-256-GCM envelope encryption for every credential
  • Argon2id password hashing
  • Google sign-in via OAuth 2.0 with state-bound CSRF tokens
  • Optional TOTP two-factor auth + ten one-time recovery codes
  • Signed-token password-reset and email-verification flows
  • Brief-and-discard architecture for sensitive data
  • Structured logs of every credential decrypt
  • Hosting on Linode (their data centers are independently SOC 2 Type II certified)
Not yet in place

What we don't have

  • SOC 2 Type I or Type II
  • ISO 27001 certification
  • Independent penetration test report
  • HIPAA, PCI, or FedRAMP scope
  • Formal incident response runbook (we have engineering practice; not a documented compliance artifact)
When you need more

Talk to us

If your security team requires a SOC 2 report, a signed BAA, a vendor questionnaire, or a custom deployment, we'll work with you on a custom Enterprise arrangement.

enterprise@bureau.news →

Out of scope (deliberately).

Bureau is not a HIPAA-cleared data processor. Bureau is not in PCI scope. The Brief tier is for business intelligence — not for storing patient health records, payment card data, or other regulated content. Enterprise customers who need that posture should write us and we'll talk about a dedicated deployment.

Trust earned, not claimed.

If this page hasn't answered your security team's questions, write to enterprise@bureau.news — we'll respond, in writing, with whatever specifics you need.

Start a free trial →