Yesfold sub-processors
The third parties that may process workspace data on Yesfold's behalf. The chat, tracker and telemetry processors are engaged only when a workspace connects them. AI runs on the AI Yesfold provides (the operator's default provider) unless you or your workspace add your own key, or the workspace turned on Only our AI (see the AI section).
Last updated: 2026-10-20.
Infrastructure (always engaged)
| Sub-processor | Purpose | Data | Location |
|---|---|---|---|
| PostgreSQL (CloudNativePG, self-hosted on Yesfold's own cluster) | Primary data store: workspaces, tasks, members, comments, the audit log | All workspace content, member name and email | EU (self-hosted) |
Managed Redis (external, via REDIS_URL) | Background job queue, connector dedup ledgers, rate limiter. On and required. | Transient job payloads and short-lived dedup keys (no finance values, no secrets) | EU |
SMTP email provider (via SMTP_URL; the deploy runbook uses Resend) | Sign-in links, invites, notification email | Recipient email address, the link | Per provider |
| Object storage (S3-compatible) | Task attachments | Uploaded files, filename, uploader | EU |
Postgres is self-hosted (CloudNativePG on Yesfold's own cluster), not a managed database service, so the primary data store is not an external sub-processor.
Chat (engaged only if the workspace connects it)
| Sub-processor | Purpose | Data |
|---|---|---|
| Slack | Chase messages and button replies | Assignee Slack handle, task title, reply action |
| Mattermost (self-hosted option) | The same, on the workspace's own server | Assignee Mattermost handle, task title, reply action |
Bot tokens and webhook secrets are encrypted at rest (AES-256-GCM) and never logged. Inbound chat text is treated as untrusted (fenced before any AI use).
Issue trackers (engaged only if the workspace connects one)
| Sub-processor | Purpose | Data |
|---|---|---|
| Jira, GitHub, Gitea or Plane (the workspace's own account) | Import a backlog, and keep a copy of approved work in the tracker projects an Owner/Admin linked | Sent: task title, description, status, a link back. Read on import: the tracker's issues (title, description, status, assignee, labels) |
Yesfold stays the system of record; a tracker receives approved shared work only, never a private draft or a personal task.
AI (LLM inference)
Every AI feature (onboarding draft and website intake, Ask Yesfold, backlog triage, @Yesfold
thread to tasks) goes through Yesfold's inference gateway. Which key a call uses: your own key,
then your workspace's key, then the AI Yesfold provides (the operator's default). A workspace that
adds its own key uses that instead of the operator's.
- By default, AI that reads your data goes to the operator's default endpoint, which may process it outside the EU, including in the United States.
- Keep AI on our data in the EU (an Owner or Admin's setting, off by default): the AI Yesfold provides sends it only to an EU-resident endpoint, or the call is refused. For an endpoint whose region Yesfold can't check, that is the operator's declaration. A key you or your workspace added goes where its provider runs it, this setting or not.
- Only our AI (an Owner or Admin's setting, for a workspace with its own key): the AI Yesfold provides is never used for that workspace, not even when the workspace's own AI fails.
All AI output enters as a proposal, released by a person or by a person-configured autonomy policy (manual by default; never for finance, governance or destructive actions). The AI never approves its own work, its input is fenced as untrusted, and finance values are never sent. The autonomy policy is workspace configuration and adds no sub-processor.
| Sub-processor | Purpose | Data | Location |
|---|---|---|---|
| OpenRouter (the operator's default AI endpoint) | Routes each AI call to one of the models below | Task, site and chat text, fenced as untrusted; the output is a proposal | Its global endpoint by default: processing may be outside the EU, including the United States. For a workspace that keeps AI on its data in the EU, only its EU in-region endpoint (eu.openrouter.ai), which needs an enterprise DPA for real customer data; otherwise the call is refused |
| Google (Gemini models) | Chat, drafting, triage | As above | Through the operator's endpoint above (the same rule), or your own key |
| OpenAI (GPT-5 Mini) | Quick drafting tasks | As above | Through the operator's endpoint above (the same rule), or your own key |
| Web search (OpenRouter's web search on the Exa engine; or the search of the AI service your own key uses) | When an agent or Ask Yesfold searches the web | The search the AI writes from the conversation | As the AI endpoint that ran it. Never on the AI Yesfold provides for a workspace that keeps AI on its data in the EU |
| Anthropic, Mistral (your own key only) | If you or your workspace add a key | As above | Your key's provider |
Your own AI assistant (Claude, ChatGPT), if you connect it, reads and drafts as you over MCP. That is your own account with its provider, not a Yesfold sub-processor.
Telemetry (optional)
| Sub-processor | Purpose | Data |
|---|---|---|
| Sentry (optional) | Error monitoring | Stack traces; finance values and secrets redacted before sending |
| PostHog (optional) | Product analytics (page views) | Page path, anonymous id |
Your rights
See the privacy notice. Erasure (the right to be forgotten) is supported: an Owner or Admin can remove a member, which scrubs their assignee details, deletes their chase logs and private work, revokes their AI connections, and removes their membership. If it was their last workspace, their sign-in identity is anonymized. The action is recorded in the append-only audit log by user id only.