Skip to main content
All posts
Product6 min read

Putting an AI Assistant in Slack and Microsoft Teams With Cross-Surface Continuity

Your team already lives in Slack and Teams. ZenSearch ships native assistants for both, with Block Kit / Adaptive Card answers, approval cards, threaded replies, and cross-surface continuity — the same conversation follows you from web to Slack to Teams.

March 24, 2026 · ZenSearch Team

ZenSearch ships native AI assistants for both Slack and Microsoft Teams, rendered with Block Kit and Adaptive Cards respectively, integrated with identity federation (Slack workspaces and Azure AD), and tied to the same conversation state as the web app via cross-surface continuity. The practical result: a person can start a chat on the web, continue it in Slack from their phone, and approve a sensitive agent action from Teams on their laptop — with full context preserved across surfaces.

Most AI assistants treat chat surfaces as afterthoughts: a thin Slack wrapper around an API, with no approval flow and no memory of conversations happening on other surfaces. ZenSearch treats each surface as a first-class citizen with its own UI idioms, while keeping the brain and the session store shared.

What Each Surface Looks Like

Slack uses Block Kit for rich answers. A search response renders as a header block with the synthesised answer, a divider, and a context block with hoverable source chips. Approval requests (for agent actions that touched sensitive data or triggered automations) render as interactive action blocks with Approve / Deny / Escalate buttons — the team lead approves right in the channel without opening a separate admin dashboard. Slash commands (/zen) open the assistant in any channel; the bot honours channel membership permissions automatically.

Teams renders the same content as Adaptive Cards. Answers are threaded replies; follow-up suggestions become ActionSets the user can tap. The bot respects Azure AD group membership through Microsoft Graph for permission-aware search, so a member of the Finance group sees finance-restricted documents that an Engineering-only member wouldn't.

Web is the full control surface — canvas artefacts, debug traces, agent configuration — but answers in web render identically to their Slack/Teams counterparts (same source chips, same citations, same confidence scores).

Cross-Surface Continuity

The mechanism is simple and a bit quiet: every conversation has a conversation_id in chat_conversations, indexed by team + user. When a user authenticates on any surface, their in-flight conversations become visible there. Opening a conversation on a new surface renders its message history from the shared store — the surface-specific rendering layer formats each message as Block Kit, Adaptive Card, or web JSX depending on where it's being read.

This means a researcher can kick off a deep-research agent from the web app, switch to Slack to pick up a mobile notification that the run hit its cost ceiling, tap Continue to resume with extended budget, and finish reviewing the output back on web. The conversation is one conversation — not three shadow copies.

Approvals That Actually Work Cross-Surface

Agent actions that cross a risk threshold (writing to Google Workspace, sending a Zendesk ticket update, creating a Jira issue, running a non-read SQL query) trigger an approval request. The request routes to whichever surface the approver is most likely to see — Slack for most teams, Teams for Microsoft-shop orgs, email as fallback. The approver's decision writes back to the originating conversation regardless of where they made it.

This closes a real gap: "governance" that can only happen in a web admin panel is governance that gets skipped. Approvals in the chat app your team already uses get acted on.

Identity Federation

Each surface has a native identity story. Slack maps workspace members to ZenSearch team roles via Slack OAuth scopes and, if configured, SCIM provisioning. Teams does the same through Azure AD and Microsoft Graph. Both paths normalise into the same internal identity so permission checks work consistently — a document restricted to the "Engineering" group in SharePoint is restricted whether you search from web, Slack, or Teams.

The Product Decision Behind This

You could build one great surface and keep everything else thin. ZenSearch didn't — because the people who benefit most from enterprise AI search are the ones who don't start their day in a web app. They start in Slack, or Teams, or their browser's new tab. Meeting them there, with UI that matches each tool's idioms, is the difference between "another dashboard to check" and "the AI my team actually uses."