Technical guide

Data processing

What the app reads, sends, and keeps. This technical overview supports your review of Jev for Slack; it is not a contractual Data Processing Agreement.

Last updated:
01

About this document

This is the technical data-processing guide for Jev for Slack. It describes application behavior, not a contractual Data Processing Agreement. Contact [email protected] to arrange any required agreement before use.

Privacy Policy

App Terms

02

How classification data moves

A message event from a configured channel is verified and durably recorded. The app reads the current accessible message, expands the prompt and outcome variables, and submits that request through OpenRouter to TypeSafe.

The model selects configured outcomes. The application validates its response and renders the administrator’s configured actions. Slack executes permitted reactions, thread replies, or channel posts. The model cannot invent a new action or edit another person’s message.

Action-only variables are expanded by the app and are excluded from classification input unless also referenced in the prompt or outcome criteria.

03

Available Slack variables

The variable picker explains these explicit bindings. Unknown variables are rejected; values are never silently added as background context.

{{message_text}}
The source message text.
{{message_link}}
A permalink to the source message.
{{channel_name}} / {{channel_id}}
The source channel name or identifier.
{{user_id}}
The sender’s Slack user identifier.
{{message_ts}} / {{thread_ts}}
The message timestamp or its thread reference.
{{workspace_name}}
The installed workspace name.
04

Application storage

Cloudflare D1 holds records scoped by workspace. Temporary drafts are additionally bound to the administrator. Slack tokens are encrypted. Provider secrets stay in backend configuration.

Temporary editor drafts and dry-test modal results are stored in Cloudflare D1, bound to the workspace and administrator, and expire after 30 minutes. Test results can include rendered action text containing referenced Slack message content. These records use D1 storage protection; the app does not apply its separate bot-token encryption to draft or test-result JSON.

Rules
Prompts, outcomes, action templates, channel and trigger selections, owner IDs and revisions.
Temporary test results
The test modal stores rendered actions for inspection, which may contain message-derived text, with a 30-minute expiry. Long-lived activity and jobs exclude these expanded values.
Activity
Identifiers, outcome labels, scores, action states and sanitized errors; no full message bodies or expanded action text.
Recovery
Event and message references, attempts, next eligible retry, original expiry and per-action delivery receipts.
Installation and consent
Workspace and bot identity, encrypted token, installer, timestamps and processing authorization.
Billing
Workspace subscription state, payment provider references and active human member quantity. Stripe handles checkout and payment details.
05

Retention and recovery

Activity, pending work and action receipts expire 14 days after original receipt. Retries do not reset the clock. Rules and installation settings are separate. Duplicate-action protection lasts for the retained receipt lifetime; it is not a permanent or global exactly-once guarantee.

Recovery retrieves current message content and checks visibility, rule revision, enabled state, future-only eligibility, and processing consent. Changed or disabled rules invalidate queued work. Events never delivered to the app cannot be recovered.

Ambiguous non-idempotent posts require review, not an automatic replay. Retry now does not bypass those controls.

Uninstall removes application data but does not automatically cancel recurring Stripe billing. Cancel through the portal first. Billing identity and trial history remain across reinstall, expired billing links are purged, and processed webhook identifiers are retained for 90 days.

06

External services

Cloudflare provides application runtime and storage; Slack provides workspace events and action APIs; OpenRouter routes classifications to TypeSafe; Stripe processes subscriptions and payments.

No provider zero-retention, no-training or fixed-region guarantee is implied. Contact us to review the applicable provider terms and agreements for your organisation.

07

Administrator controls

Authorize or withdraw external processing from the Data processing section in App Home. Disable or delete rules to stop their future work. Tests require consent, an active subscription or trial, and access to a source message in a channel selected by the rule. They use the model but do not execute Slack actions.

Only selected channels accessible to both the bot and the current rule owner are eligible. DMs and bot messages are excluded. Provider health checks verify OpenRouter account access and remaining credits without Slack message content. They do not run synthetic model inference. A successful account check does not clear a retained inference failure; that problem remains visible until a real classification succeeds. Healthy results remain quiet.

Withdrawal is checked before each action; it cannot recall a request or Slack operation already accepted. Uninstalling does not remove messages or reactions posted earlier.

Contact

For data-processing questions or to arrange applicable agreements before use, contact [email protected].

See the Privacy Policy for privacy requests and the support guide for safe information to share.