Privacy Policy
Last updated 2026-07-21.
Particulars ("the service") is a tool for writing team and role charters, operated by Particulars and Universals, Inc. This policy explains what we collect, what we do with it, and how to remove it. It's written in plain language because that's the point.
What we collect
- Account email. When you sign in, we send a magic link to your email and store the address. Links are single-use and short-lived. We never store passwords.
- Profile fields you write. Display name, what you're good at, your purpose, an avatar color. Visible to members of your orgs.
- Charter content. Whatever you type into a charter — purpose, focus areas, measures, decision rights, roles, guidelines — plus a version history of edits so teams can see diffs and restore.
- Decision records. Decisions you log by hand, and drafts the decision radar derives from connected Slack channels: a one-sentence statement plus a reference to the channel and message timestamp it came from. Drafts sit unconfirmed until an editor confirms or dismisses them.
- Weekly reviews. If you use the Friday review, two numbers per week (how much got done, how it felt). Teammates see only a team-level median, and only in weeks where at least three teammates reviewed — below that, nothing is shown.
- Membership. Which orgs you belong to and your role (owner/member). Orgs are joined by email domain, so members of your org can see your name and email.
- Slack credentials, if an org owner connects Slack: workspace ID, workspace name, and a bot token encrypted at rest (AES-256-GCM) with a key that never leaves the server.
- Slack-derived signals, if a charter is connected to a channel: message counts, contributor stats, and short AI-written summaries. Raw message text is not stored — with one narrow exception: while a charter draft is generating, its working data (including brief message excerpts) is stored for up to 24 hours, then permanently deleted.
- Measure sources, if you wire a measure to live data: the source configuration, an encrypted credential where the source needs one, and the numeric readings we fetch — numbers with timestamps, nothing else.
- Billing. Payment runs through Stripe. We store your plan, subscription status, and Stripe identifiers. We never see or store card numbers.
- Presence. While you have a charter open, which field you're focused in — kept for about 30 seconds so teammates can see you're there, then gone.
How we use AI
Several features send data to Anthropic's Claude API and store what comes back. Your data is not used to train AI models — not by us, and not by Anthropic, which excludes API data from training. Specifically:
- Charter drafts. When you ask for a draft from Slack, we read recent messages in the channels you picked, send a sample to the model, and store the resulting draft and signal summaries.
- Charter reviews. On a biweekly cadence, connected charters are checked for drift against recent messages in their connected channels; unconnected charters are reviewed on the charter text alone. What's stored is the review's output — observations and suggestions — not the messages.
- Decision radar. On the same cadence, connected channels are read for decisions the team appears to have made, stored as drafts for an editor to confirm or dismiss. On by default for connected charters; toggle per charter in Settings → Sources.
- Coaches. The team coach is off by default. When a team turns it on, it writes a short biweekly note from member-visible signals and posts it to the team's connected channel. Personal suggestions are computed only from what your own signed-in view already shows — your roles, your queue, and the profile fields you chose to write.
Slack scopes and how we use them
When an org owner connects Slack, we request the following bot scopes:
channels:history,groups:history— read messages, only in the channels a charter is connected to.channels:read,groups:read— list channels so you can pick which ones to connect.users:read,users:read.email— resolve user IDs to display names and emails when summarizing channel signals.commands— handle the/charterslash command.chat:write— reply to slash commands, DM the person who asked, and — if a team turns its coach on — post that team's coach note into its connected channel.team:read— read your workspace name (for display).
We do not read DMs, channels you haven't connected, files, or any other Slack content. Uninstalling Particulars from your workspace revokes the token immediately; when Slack notifies us of the uninstall, we delete the stored connection and token.
Retention
- Charter content and version history persist as long as the charter exists. Deleting an org deletes all of it, immediately, in a single transaction.
- Slack draft jobs (the working data while a draft generates, including brief message excerpts) are kept for up to 24 hours, then permanently deleted by a daily job.
- Review notes, coach notes, decision records, and metric readings persist with the charter — they are the record.
- Presence expires after about 30 seconds; stale rows are swept daily.
- Error reports (Sentry) are retained up to 90 days. Hosting logs rotate on the order of days.
Where data lives
Charters and org data: Postgres on Supabase (US region). Application: Vercel (static frontend + serverless functions). Sign-in email: Resend. AI: Anthropic (Claude API), routed through Vercel's AI Gateway, which retains none of the request content. Payments: Stripe. Error reports: Sentry. That's the whole list.
What we don't do
- No analytics or tracking scripts. The only cookie is your session.
- No ads, no ad networks, no data brokers. We don't sell or trade your data.
- No AI training on your data, by us or our AI provider.
- No reading Slack DMs or channels you haven't connected.
Public charters
A charter published at a public link (/p/…) is readable by anyone with the URL — that's what public means. Org charters are visible to org members only. Measure values never render on public pages.
Cookies and local storage
One first-party session cookie keeps you signed in. Your browser's local storage holds interface preferences (theme, sidebar state, pinned teams). No third-party cookies.
Revoking and deleting
- Disconnect Slack: an org owner can disconnect from org settings → Connectors — we revoke the bot token with Slack and disable the stored connection. Uninstalling the Particulars app from your Slack workspace settings works too; when Slack notifies us, the connection is disabled the same way.
- Delete an org: from org Settings. Cancels any subscription first, then removes all charters, version history, decisions, members, and the Slack connection.
- Delete a charter: from the charter's Settings tab. Removes the charter, its version history, decisions, and connections.
- Delete your account: Profile settings → Delete account. Immediate; removes your memberships and scrubs your identity from shared records, including version history. If you own an org, delete the org first.
- Take your data with you: every charter exports to Markdown from its Settings tab, and an org owner can export the whole org in one click. Portability is a design goal, not a concession.
Contact
Privacy questions, deletion requests, or anything that requires a human: clay@cpj.fyi.