Security and GDPR
A procedure only makes sense if it cannot be bypassed
This is how the application works today: what we store, what we do not record and how we make sure an AI agent never promises a customer more than the procedure allows.
Data in the EU, no conversation text
- The database and the application server run in the EU (Frankfurt).
- We do not store conversations with customers. A case keeps the path of steps, the chosen answers and values (e.g. the discount granted).
- Checking an agent's reply (check_reply) works without storing its text; we only record a detected violation.
- Auditing a finished conversation sends it to the AI model only to read it; we keep the verdict and the violations, not the conversation.
Company separation
- Each company sees only its own data: the database enforces the isolation (Row Level Security), not just the application.
- Roles: admin, editor and agent. Permissions are checked on the server for every action.
AI agents under control
- Policy limits, steps reserved for people and hand-overs are enforced by the server. A value above the limit is rejected no matter which agent sent it.
- Assistants connect with OAuth 2.1 with PKCE and the user's consent; bots with an API key. Any connection can be disconnected with one click.
- Keys, codes and tokens are stored only as SHA-256 hashes, and webhook secrets as AES-256-GCM ciphertext.
- Webhooks are called only by the server, only over HTTPS and with internal addresses blocked.
A trail of changes
- Published process versions are immutable; a case finishes on the version it started on.
- Before publishing, a person must review the AI's assumptions and the generator's questions.
- Audit log of permission changes: who changed roles, API keys, AI connections and secrets, and when. Entries cannot be edited.
Your rights to your data
- An admin downloads all of the company's data in one JSON file.
- Anyone can delete their account, and an admin can delete the whole company with all its data.