Back to Home

How to Set Up Automatic Action Item Tracking with Claude Cowork

This guide walks you through setting up an automation that scans your Slack mentions, Granola meeting transcripts, Monday Notetaker recordings, and Gmail inbox twice a day, extracts action items assigned to you, and writes them to a Monday.com board.

At a Glance

  1. Enable four connectors in Claude Cowork: Slack, Granola, Gmail, Monday.com.
  2. Paste the setup prompt into a new Cowork session (see Appendix A).
  3. Claude creates a Monday.com board and two scheduled tasks for you.
  4. You rename status labels in the board: Source column to Slack/Granola/Gmail/Notetaker, Status column to New/Done/Dismissed.
  5. Claude runs a test scan. You verify the results.
  6. From then on, action items are extracted automatically at 7:00 AM and 3:00 PM.

What You Get

A Monday.com board that is automatically populated with your action items at 7:00 AM and 3:00 PM (your local time). Each item includes the source (Slack, Granola, Notetaker, or Gmail), the sender, a link to the original message, and the raw context. Items are deduplicated, so you won't see the same action item twice.

Prerequisites

You need a Claude Cowork account with the following connectors enabled:

  1. Slack — so the automation can search your mentions
  2. Granola — so it can read your meeting transcripts from the standalone Granola app
  3. Monday.com — so it can create board items and read Monday Notetaker recordings
  4. Gmail — so it can scan your recent emails

To enable a connector, open Claude Cowork, go to your connectors settings, and connect each service.

Setup Steps

Step 1: Download the setup prompt

Click the "Copy Prompt" button in Appendix A at the bottom of this page. This prompt contains all the instructions Claude Cowork needs to create the automation for you.

Step 2: Paste into Claude Cowork

Open a new Claude Cowork session and paste the entire contents of the prompt. Claude will walk you through the setup interactively:

  1. It will find your Slack user ID and ask you to confirm it.
  2. It will create a Monday.com board called "Action Items" with the correct columns.
  3. It will ask you to rename some status labels in the Monday.com board UI (the API cannot do this). Specifically, you will rename labels in the Source column to "Slack", "Granola", "Gmail", and "Notetaker", and labels in the Status column to "New", "Done", and "Dismissed".
  4. It will create two scheduled tasks (morning and afternoon scans).
  5. It will run a test scan so you can verify the results.

Step 3: Verify the test results

After the test run, check the Monday.com board. You should see action items from your recent Slack mentions, Granola meetings, Monday Notetaker recordings, and Gmail. Confirm that the items look correct and are written in clear, actionable language.

How It Works

Each scan does the following:

  1. Searches Slack for messages that mention you (both direct mentions and @-mentions).
  2. Queries Granola for meetings from the last 12 hours and checks the action items or "Next Steps" sections for tasks assigned to you.
  3. Queries Monday Notetaker for meetings you participated in during the last 12 hours. This is particularly useful for meetings conducted in Hebrew, as the automation translates action items to English.
  4. Searches Gmail for emails from the last 24 hours, excluding Jira and Monday.com notifications. It focuses on emails from real people that ask you to do something.
  5. Extracts action items and writes them in imperative form ("Review the PRD", not "You should review the PRD").
  6. Deduplicates across all sources, including cross-source deduplication between Granola and Monday Notetaker for the same meeting.
  7. Creates items on the Monday.com board with source, sender, link, timestamp, and raw context.

All action items are written in English, even if the original message was in another language.

Customization

You can adjust the automation after setup:

Change scan times. Edit the scheduled tasks in Claude Cowork and update the cron expressions. For example, 0 9 * * 1-5 runs at 9:00 AM on weekdays only.

Exclude additional email senders. Add more -from: filters to the Gmail search query in the scheduled task prompt. For example, -from:noreply@github.com to exclude GitHub notifications.

Add domain-specific vocabulary. If your team uses acronyms or abbreviations that Claude might misinterpret, you can add a glossary section to the scheduled task prompt. This helps the automation understand your internal language and write more accurate action items.

Pro tip: Granola vs. Monday Notetaker

Do not use both Granola and Monday Notetaker for the same meeting. The automation deduplicates across sources, but recording the same meeting twice adds unnecessary noise. Pick one per meeting.

Monday Notetaker works well for meetings conducted in Hebrew. It captures Hebrew transcripts accurately, and the automation translates all action items to English regardless. For Hebrew meetings, prefer Monday Notetaker over Granola.

Troubleshooting

No items appear after a scan. Check that all connectors (Slack, Granola, Gmail, and Monday.com) are connected in Claude Cowork. If the Granola connector was recently added, you may need to reconnect it.

Duplicate items. The automation deduplicates by message link. If duplicates appear, check that the Message Link column on your board hasn't been modified.

Items in the wrong language. The prompt instructs the automation to always write in English. If you see items in another language, the scheduled task prompt may need to be re-saved. Open the task in Claude Cowork and verify the language instruction is present.

Monday.com status labels are showing default names. The API cannot rename status labels. You need to open the board in Monday.com, click on any status cell, click "Edit Labels", and rename them manually.

Appendix A: Action Items Automation Setup

Paste this entire prompt into Claude Cowork to set up an automated action items workflow. It will scan your Slack mentions, Granola meeting transcripts, Monday Notetaker recordings, and Gmail emails twice a day and write action items to a Monday.com board.

## What I need you to do

Set up an automated system that scans my Slack mentions, Granola meeting transcripts, Monday Notetaker recordings, and Gmail emails twice a day (7:00 AM and 3:00 PM, my local time), extracts action items assigned to me, and writes them to a Monday.com board.

Here is how to do it step by step.

### 1. Find my Slack user ID

Search Slack for my name using `slack_search_users` and note my Slack user ID. You will need it for the scheduled task prompts below. Ask me to confirm the ID before proceeding.

### 2. Create a Monday.com board

Create a new board in Monday.com called "Action Items" using the `create_board` tool. Add the following columns:

1. **Source** (status column) — label index 0 = "Slack", index 1 = "Granola", index 2 = "Gmail", index 3 = "Notetaker"
2. **Status** (status column) — label index 5 = "New", index 1 = "Done", index 2 = "Dismissed"
3. **Source Channel** (text column)
4. **Message From** (text column)
5. **Message Link** (link column)
6. **Message Timestamp** (date column)
7. **Raw Context** (long text column)
8. **Scan Timestamp** (date column)

After creating the board and columns, tell me the board ID and the column IDs so I can verify them. Also ask me to open the board in Monday.com and rename the status column labels to match the names above (Slack/Granola/Gmail/Notetaker for Source; New/Done/Dismissed for Status), because the API cannot rename status labels.

### 3. Create two scheduled tasks

Create two scheduled tasks with the cron expressions below. Both tasks use the same prompt (shown further down), just with different task IDs.

**Morning scan:**
- Task ID: `scan-action-items-morning`
- Cron: `0 7 * * *` (7:00 AM local time daily)

**Afternoon scan:**
- Task ID: `scan-action-items-afternoon`
- Cron: `0 15 * * *` (3:00 PM local time daily)

### Scheduled task prompt

Use the following as the prompt for both scheduled tasks. Replace the placeholders before saving:

- `{{SLACK_USER_ID}}` — my Slack user ID from step 1
- `{{BOARD_ID}}` — the Monday.com board ID from step 2
- `{{SOURCE_COLUMN_ID}}` — the column ID for the Source status column
- `{{STATUS_COLUMN_ID}}` — the column ID for the Status status column
- `{{SOURCE_CHANNEL_COLUMN_ID}}` — the column ID for Source Channel
- `{{MESSAGE_FROM_COLUMN_ID}}` — the column ID for Message From
- `{{MESSAGE_LINK_COLUMN_ID}}` — the column ID for Message Link
- `{{MESSAGE_TIMESTAMP_COLUMN_ID}}` — the column ID for Message Timestamp
- `{{RAW_CONTEXT_COLUMN_ID}}` — the column ID for Raw Context
- `{{SCAN_TIMESTAMP_COLUMN_ID}}` — the column ID for Scan Timestamp

```
You are an action-item extraction agent. Your job is to scan recent Slack mentions, Granola meeting notes, Monday Notetaker recordings, and Gmail emails, extract action items assigned to me, and write them to a Monday.com board.

IMPORTANT: All action items must be written in English, even if the source content is in Hebrew or any other language. Always translate to English.

## Step 1: Scan Slack

Search for recent Slack messages mentioning me. Run two searches covering the last 12 hours:

1. `slack_search_public_and_private` with query `to:<@{{SLACK_USER_ID}}>` and sort by timestamp descending
2. `slack_search_public_and_private` with query `<@{{SLACK_USER_ID}}>` and sort by timestamp descending

Combine results and deduplicate by message timestamp.

## Step 2: Scan Granola

Use the Granola MCP connector to find recent meetings:

1. Use `list_meetings` with `time_range: "this_week"` to get recent meetings.
2. For each meeting from the last 12 hours, use `get_meetings` with the meeting ID to get the summary and action items.

## Step 3: Scan Monday Notetaker

Use `get_notetaker_meetings` with `access: "OWN"`, `include_action_items: true`, `include_summary: true`, and `limit: 25` to get recent meetings recorded by Monday Notetaker.

For each meeting from the last 12 hours, check the action items and summary for tasks assigned to me. Monday Notetaker meetings may have Hebrew transcripts — extract action items and translate them to English.

## Step 4: Scan Gmail

Use `gmail_search_messages` to find recent emails. Search with query `newer_than:1d -from:jira -from:noreply@monday.com -from:notifications@monday.com` to get emails from roughly the last 24 hours while excluding Jira and Monday.com notifications. Set `maxResults` to 50.

For each email returned, check whether it contains an action item for me. Ignore newsletters, automated notifications, and purely informational emails. Focus on emails from real people that ask me to do something, request a response, or assign a task.

Use the email subject as the "Source Channel" and the sender name as "Message From". For the message link, there is no permalink available, so use `{"url": "https://mail.google.com", "text": "Gmail"}` as a placeholder.

## Step 5: Extract Action Items

For each Slack message, Granola meeting summary, Monday Notetaker meeting, or Gmail email, determine whether it contains an action item for me. An action item is a request, question, or task directed at me that requires me to do something. Examples:

- "Can you review the PRD?" → action item
- "What's the status of the API integration?" → action item
- "FYI we shipped the feature" → NOT an action item (informational)
- "Great work on the release" → NOT an action item (praise)
- "Michael to send summary" → NOT an action item for me (assigned to someone else)
- An email saying "Please review the attached proposal by Friday" → action item
- A newsletter or automated alert → NOT an action item

For Granola and Monday Notetaker meetings, pay close attention to the "Next Steps" or action items section. Only extract items where I am the owner or clearly expected to act.

For each action item, write a short imperative description in English. Keep it concise but specific enough to be actionable without re-reading the original message.

IMPORTANT — Phrasing rules for action item text:
- Write in imperative form addressed to the reader. I am the reader of these items.
- Do NOT write my name followed by "will...", "promised to...", "should..." or any third-person reference to me.
- Instead, write the action directly: "Review the PRD", "Send prototype dashboards to Michael", "Finalize branding decisions in the scoring PRD".

IMPORTANT — Language:
- ALL action item text must be in English. If the source is in Hebrew or any other language, translate to English.
- The Monday.com board must contain only English text. Never write in Hebrew or any other non-English language.

## Step 6: Deduplicate

Before writing, check the Monday.com board for existing items to avoid duplicates. Use `get_board_items_page` on board {{BOARD_ID}} with `includeColumns: true` to get recent items. Compare the Message Link (column `{{MESSAGE_LINK_COLUMN_ID}}`) of each new action item against existing items. Skip any item whose message link already exists on the board.

For Gmail items (which share the same placeholder link), also compare the item name against existing items to avoid duplicates.

Also deduplicate across Granola and Monday Notetaker — the same meeting may appear in both sources. If the same action item appears in both, only create one entry (prefer whichever source has more context).

## Step 7: Write to Monday.com

For each new action item, create an item on board {{BOARD_ID}} using `create_item`. Use the following column mapping:

- **name** (item name): The action item text (short imperative description)
- **{{SOURCE_COLUMN_ID}}** (Source): Use `{"index": 0}` for Slack, `{"index": 1}` for Granola, `{"index": 2}` for Gmail, `{"index": 3}` for Notetaker
- **{{SOURCE_CHANNEL_COLUMN_ID}}** (Source Channel): The Slack channel name, Granola/Notetaker meeting title, or email subject
- **{{MESSAGE_FROM_COLUMN_ID}}** (Message From): The name of the person who created the action item
- **{{MESSAGE_LINK_COLUMN_ID}}** (Message Link): `{"url": "<permalink>", "text": "Link"}` — the Slack permalink, Granola meeting link (use format https://app.granola.ai/note/<meeting_id>), Monday Notetaker meeting link, or `{"url": "https://mail.google.com", "text": "Gmail"}` for email items
- **{{MESSAGE_TIMESTAMP_COLUMN_ID}}** (Message Timestamp): `{"date": "YYYY-MM-DD"}` — when the original message/meeting/email occurred
- **{{RAW_CONTEXT_COLUMN_ID}}** (Raw Context): Write a concise summary of the source message in English. Capture the core intent, key details, and relevant nuance without adding interpretation or suggested actions. Keep it neutral, factual, and easy to scan. If the source is not in English, include only the English translation — do not include the original non-English text. Use `{"text": "..."}` format.
- **{{SCAN_TIMESTAMP_COLUMN_ID}}** (Scan Timestamp): `{"date": "YYYY-MM-DD"}` — today's date (when this scan ran)
- **{{STATUS_COLUMN_ID}}** (Status): `{"index": 5}` for new items

IMPORTANT: The Source and Status columns are status-type columns. You MUST use index-based values, not label text.

## Important Notes

- ALL output to the Monday.com board must be in English. Never write in Hebrew or any other non-English language.
- If a single message contains multiple action items for me, create a separate Monday.com item for each.
- If there are no new action items, do nothing. Do not create empty items.
- Be conservative: only extract clear action items, not vague mentions.

## Zencity Acronym Glossary

Use this glossary to correctly interpret acronyms in Slack messages and Granola transcripts so you understand what is being discussed. Do NOT expand acronyms in the action item text — just use the glossary to understand context and write meaningful tasks.

### Products and Features
- BW = Blockwise (district-level survey product)
- CS = Community Survey (city-wide managed survey product)
- PI / PIS = Post-Interaction Survey (triggered after a resident service interaction)
- CX = Customer Experience (used interchangeably with PI)
- RFA = Resident Facing App (the survey questionnaire residents see)
- DTM = Dynamic Topic Modeling (AI-based open-text classification)
- AIA = AI Assistant (Zencity's AI Assistant product)
- ZOS = ZencityOS (the platform layer)
- CP = CommonPlace (legacy engagement platform being migrated into Engage)
- EAS = Engage Admin Service
- QBB = Questionnaire Builder Backend
- BFF = Backend for Frontend (Survey stack)
- CF = CloudFront (AWS CDN)
- OCMS = Organization Content Management Service

### Frameworks and Programs
- DCAP = Data-Driven Commander Accountability Program (LE performance management)
- P2S = Prompt-to-Survey (AI feature for generating surveys from natural language)
- DIY = Do It Yourself (self-serve surveys)

### Teams and Roles
- PS = Professional Services
- A4 = Applied Analytics
- AM = Account Manager
- CM = Client Manager
- AE = Account Executive
- CSM = Customer Success Manager
- PM = Product Manager
- GTM / G2M = Go-To-Market

### Sales and Commercial
- MEDDIC = Sales qualification framework
- MYD = Multi-Year Deal
- SMB = Small and Medium Business
- MM = Mid-Market
- YIR = Year in Review
- CPR = Cost Per Response
- CPQ = Cost Per Qualified Response

### Technology
- FF = Feature Flag
- GA = Generally Available
- APM = Application Performance Monitoring
- MR = Merge Request
- POC = Proof of Concept
- JTBD = Jobs To Be Done (product methodology)

### Research
- MRP = Multilevel Regression and Poststratification
- QoL = Quality of Life

### Law Enforcement
- LE = Law Enforcement
- PD = Police Department
- MCCA = Major City Chiefs Association
- MStat / MSTAT = Minneapolis STAT (crime/performance statistics meeting)
- CompStat = Comparative Statistics (police accountability system)
- RMS = Records Management System

### Government
- USCM = United States Conference of Mayors
- MHCLG = Ministry of Housing, Communities and Local Government (UK client)
- DEI = Diversity, Equity, and Inclusion

### Informal
- STP = Same Ten People (loud minority problem)
- TLV = Tel Aviv
- FY = Fiscal Year
```

### 4. Verify

After creating the board and both scheduled tasks, run one of the tasks manually to test that it works. Show me the results so I can confirm the action items look correct.

### Required connectors

Make sure the following Cowork connectors are enabled before starting:

1. **Slack** — for searching messages
2. **Granola** — for reading meeting transcripts from the standalone Granola app
3. **Monday.com** — for creating board items and reading Monday Notetaker recordings
4. **Gmail** — for scanning emails

If any of these are missing, let me know and I will connect them.