Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.buildbetter.ai/llms.txt

Use this file to discover all available pages before exploring further.

Topics ingests from Slack and Intercom today. Each source has its own setup and runtime characteristics — and a handful of workspace-level settings control behavior like staleness and notifications.

Slack

Setup

Topics consumes from the same Slack connection your workspace already uses for Signals. Specify which channels to track in your Slack integration settings:
  • Track channels explicitly — only channels you’ve opted in are processed for topic ingestion
  • Backfill on setup — historical messages from the channel are ingested when tracking is first enabled (covers threaded, non-threaded, and single-message conversations)
  • Live ingestion — new and edited messages flow in continuously

Channel Purpose Context

The Slack channel’s purpose (the short description set in Slack itself) is passed to the LLM classifier as channelContext. It improves:
  • Topic naming — names reflect the channel’s intent
  • Priority assessment — the classifier reads the purpose to weight urgency
  • Matching confidence — with channel context present, the matcher’s confidence threshold drops from 0.7 to 0.6
If you update the channel purpose later, the new value is picked up on the next ingestion event.

Edits and Updates

Edited Slack messages reprocess automatically — stored conversation text refreshes, and downstream classification follows. Backfills group related closed conversations correctly without splitting them into duplicates.

Intercom

Setup

Topics piggybacks on your existing Intercom connection. Open conversations are ingested live; closed ones backfill on setup.

Conversation Context

The Intercom conversation subject and metadata are passed as channel context — same role as the Slack channel purpose.

Initial Rollout

The first wave of Topics focused on Intercom, with emphasis on open conversations — the ones that still need a team response. Slack came online next with channel-level tracking.

Stale Threshold

The setting organization_topic_stale_threshold_minutes controls how long a topic can have an unanswered customer message before flipping to Stale.
  • Default: 240 minutes (4 hours)
  • Configurable per organization in Settings
  • Job: runs every 15–30 minutes; on transition to stale, dispatches an in-app notification

Notifications

Two notification kinds fire today.
NotificationWhen It Fires
topic_staleA topic transitions to stale (unanswered beyond the threshold). Body: “Topic '' has been awaiting response for N minutes.”
topic_new_high_priorityA new topic is created with priority at or above the configured threshold.

Defaults

notifyOnStale: true
notifyOnNewHigh: true
highPriorityThreshold: 4
staleThresholdMinutes: 240
In-app notifications surface via the BuildBetter notification bell. Slack/webhook delivery is on the roadmap but not enabled in early access.

Workspace Settings

All Topics settings live in your organization’s settings table and can be edited from the BuildBetter Settings panel (look for “Topics” in the settings list once Topics is enabled in your workspace).

Connecting Topics to Triage

Topics lives inside Triage as the Topics tab — that’s where you see the live feed, browse, and take action. The /topics standalone workspace (gated by the topics feature flag) is the older surface for the same data; everything you can do there is reachable from the Triage tab.
If a channel doesn’t have a purpose set in Slack, set one — even a short description meaningfully sharpens topic names and matching. The classifier reads it on every ingestion event.