Skip to content

How it works

Collect

  • App Store
  • Google Play
  • Zendesk
  • Intercom
  • Gong
  • GitHub
  • Bluesky
  • SQL
  • Webhooks
  • + any REST or MCP

Act

  • Studio
  • AI agents via MCP
  • Slack
  • Jira
  • Linear
  • Warehouse

obsei is one Python process (or container) that you run. Everything in the dashed box happens on your machines; data only leaves it for endpoints you configure and allow.

  1. Collect. Sources fetch new feedback from app stores, helpdesks, call tools, warehouses, communities, files, webhooks or any REST or MCP server. Each record gets a stable id, so re-runs only process new or changed feedback.

  2. Redact. Before anything is stored or sent to a model, emails, phones, cards, IBANs and national IDs for seven regions are replaced with tokens such as <EMAIL>, optionally names too. Authors become salted pseudonyms.

  3. Classify. Your own model labels sentiment, intent, language and custom fields. It only sees redacted text, and the egress policy blocks public endpoints unless you allow them.

  4. Theme. Records are embedded and grouped into stable themes with trends and near-duplicate detection. Groups smaller than k (default 5) are hidden.

  5. Store. Everything lands in an encrypted DuckDB file. obsei forget, obsei export and the audit log cover access, erasure and retention.

  6. Act. Sinks deliver new feedback to Slack, Jira, Linear, GitHub, webhooks, Parquet or SQL. People use Studio and Slack; agents use the read-only MCP server.

Who Themes Redacted quotes Pseudonyms Raw text
Studio viewer ✓
Studio analyst, Ask ✓ ✓
AI agents (MCP) ✓ ✓
Your model ✓
Sinks ✓ opt-in
obsei export (CLI) ✓ ✓

Raw text with personal data is never stored. Roles are set per token or through your SSO proxy; see Server and access.

Command Use
obsei try Preview redacted records; nothing stored or sent
obsei run One pass of every pipeline, from cron or CI
obsei serve Scheduled pipelines, webhooks, Studio and MCP over HTTP
obsei mcp MCP over stdio for a local agent