Security isn't a feature.
It's the foundation.

Your content. Your data. Your rules. Every action audited, every transition enforced.

Content Safety

Three layers. Before anything goes live.

Every channel output passes through the safety pipeline before it can be marked Ready. The pipeline blocks the Ready transition if any check fails.

1

Blacklist

200+ default terms across 8 categories (hate, nsfw, violence, competitor, legal, drugs, spam, custom). L33t-speak normalisation. Custom workspace terms. Fast, synchronous.

2

LLM Classification

Classification only — not generation. Strict system prompt checks for hate speech, NSFW, harmful content, and brand mismatch when a Brand Profile is set. Runs async after save. Result cached on channel output.

3

Link Verification

Extracts all URLs from content, verifies they resolve with HEAD requests. Flags broken links before publication. No dead URLs going live.

All three must pass → safety_status = passed. Any failure → blocks Ready transition. Owner can override with explicit confirmation (audit logged).

Access Control

Three roles. No role trees.

Owner

Full access. Manages workspace settings, team members, brand profiles, channel accounts. Can override safety flags.

Editor

Create and edit Stacks and channel outputs. Mark Ready. Publish. Cannot manage settings or team members.

Viewer

Read-only access. Can view Stacks, Queue, and published content. Cannot create or modify.

Workspace scope is always derived from the JWT — never from a URL parameter. Permission boundaries are simple because the product is simple.

Infrastructure specs.

DatabaseNeon Postgres (EU — Frankfurt)
HostingVercel (Edge + Serverless, fra1)
AuthJWT HS256 (jose) + bcrypt password hashing
Rate LimitingPer-endpoint sliding window (Auth: 10/min, API: 200/min)
CORSStrict origin allowlist
Security HeadersHSTS, CSP, X-Frame-Options DENY, X-Content-Type-Options
State TransitionsDeterministic state machine — invalid transitions throw DomainError
Audit LogEvery state change logged: entity, actor, from/to status, timestamp

Compliance

GDPR
ECG

Austrian company subject to EU data protection law. EU-hosted database (Frankfurt). Full GDPR compliance with data export and deletion on request. US data transfers (Ayrshare, Vercel, OpenAI) disclosed with SCC reference. No data sharing beyond what is needed to operate the service.