---
title: "Weekly signal brief"
description: "Write a weekly brief of the new and growing customer signal in Deck, with Deck's numbers and links."
url: "/docs/agents/workflows/weekly-signal-brief"
---

This page is an agent-readable workflow for Deck. Humans can follow along. Coding agents should treat the steps as the source of truth.

# Weekly signal brief — agent workflow

* **Use it when:** the user asks "what changed this week?", "write the weekly feedback brief" or "what is new in our feedback?"
* **Outcome:** the user has a short brief of new feedback, growing themes and subthemes, negative signal and NPS movement. Each number comes from Deck and each item has a Deck link. Nothing changes in Deck.
* **Needs:** Deck MCP. This workflow only reads. Subtheme trends and NPS need the Starter plan or higher.

## 1. Probe Deck MCP

Call `get_user_context`. This must be a real tool call.

* 401 Unauthorized: tell the user to connect Deck MCP in this client (Settings → Connections). Stop.
* No Deck tools: fetch and follow [https://docs.getdeck.io/docs/agents/getting-started/prompts/ai-pm.md](https://docs.getdeck.io/docs/agents/getting-started/prompts/ai-pm.md). Stop this workflow until the tools work.

## 2. Set the scope

Ask one question: "All customers, or one segment?" The default is all customers and the last 7 days.

Call `get_overview`. Read the data counts, the top themes, the insights from the last 7 days and, on the Starter plan or higher, `nps_headline`. When segments are on, the result lists them. Use the segment ID that matches the user's answer.

## 3. Read the new feedback

Make these calls at the same time:

* `explore_insights` with `window_days: 7` and `limit: 100`. Add `segment_ids` with the one segment. It keeps the insights that customers said in the last 7 days: the interview date, else the import date. Read `total` and `applied_scope`. Page with `offset` only when you need more quotes. The categories and the sentiment of one page are not totals. For Deck's count of one category, call it again with `category` and `limit: 1`, and read `total`. Do not use `since` here: it returns every insight of the window with `count`, and it takes no `limit` or `offset`.
* `list_sources` with `created_after` set to the first day of the window (`YYYY-MM-DD`, UTC). Read `total` and the processing summary. The type breakdown in the message counts only the returned page. For the count of one type, call `list_sources` again with the same `created_after`, its `content_type` and `limit: 1`, and read `total`. Sources that still process, wait for credits or failed are not in the counts yet.

## 4. Find what grows

Make these calls at the same time. Add the same segment scope to each call. For all customers, also add `segment_scope: "all_customers"` to the `explore_subthemes` call. Without it, an organization with segments gets the subthemes of every segment.

* `explore_themes` with `view: "surges"`. Each theme shows Deck's surge stats. When Deck says no themes are surging, write that in the brief.
* `explore_themes` with `view: "high_negative"` and `window_days: 7`. This gives the themes with the highest negative share that had feedback this week. Counts stay all-time.
* `explore_subthemes` with `sort: "trending"` and `window_days: 7`. Each subtheme shows Deck's trend for the last 14 days against the 14 days before. On the Free plan this returns `feature_unavailable`. Then leave out the subtheme section and say why.
* `explore_nps` with `focus: "trends"`. Read the current score, the change and the direction. On the Free plan this returns `feature_unavailable`. Then leave out the NPS section.

## 5. Get the quotes

Pick the top 3 items from steps 3 and 4. For each one, make these calls at the same time:

* A subtheme: `explore_subthemes` with its `subtheme_id`. Read the key quotes.
* A theme: `explore_insights` with its `theme_id`, `window_days: 7` and `limit: 5`.

The PII setting of the organization can mask quotes and emails. Do not try to unmask them.

## 6. Write the brief

Use this order. Keep each section to 3 bullets or fewer.

1. **Headline:** one or two sentences on the biggest change.
2. **New this week:** Deck's insight total, the top categories and the new sources by type.
3. **Growing:** surging themes and trending subthemes, each with Deck's surge or trend numbers.
4. **Watch:** themes with a high negative share and feedback this week.
5. **NPS:** Deck's current score, change and direction.
6. **Quotes:** one quote for each top item, with its Deck link.
7. **Caveats:** sources that still process, wait for credits or failed, and sections that the plan left out.

Each item gets its `deck_url`. For IDs without a link, call `get_platform_links` once with all of them.

In clients that render MCP Apps, such as Claude and ChatGPT, also offer the visual view. Call `show_feedback_insights` with no input to show the Deck home view.

## 7. Share the brief

Deck tools do not send messages. If the user wants the brief in Slack or email, use the client's own tool for that. Show the final text and get a yes before you send it.

## Rules

* This workflow only reads. Do not call Deck write tools.
* Quote Deck's numbers. Do not compute your own. Do not compute week-over-week changes. Use Deck's surge and trend numbers.
* Call a theme or subtheme "growing" only when Deck's surge or trend data says so.
* Use the same segment scope on every call. Read `applied_scope` and say which scope Deck applied.
* When a section has no change, write "No change this week". Do not fill it with old signal.
* If the user has more than one Deck organization, call `select_organization` first and pass `org_id` on every call.

## Done when

* The brief has the seven sections, or says why a section is left out.
* Each number in the brief comes from a Deck tool result in this session.
* Each top item has a Deck link.
* The user has the brief text, and nothing was sent without a yes.

See also: [Themes](/docs/data-points/themes), [Subthemes](/docs/data-points/subthemes), [NPS Score](/docs/features/nps-score) and [Model Context Protocol](/docs/integrations/mcp).

---

[View full sitemap](/docs/sitemap)
