---
number: "002"
slug: "002"
title: "Today's calls, ticketed before tomorrow"
summary: "A weekday scheduled task in Claude reads the day's Granola notes, files the real action items as Linear issues (no duplicates) and posts one tidy recap to Slack, even with your laptop closed."
chain: ["Granola", "Claude (scheduled task)", "Linear", "Slack"]
for: "Founders, chiefs of staff, product leads and agency account leads who end the day with six calls' worth of 'I'll send that over'"
time_to_set_up: "About 45 minutes (estimate), plus a week of light supervision"
cost: "From $20/mo (Claude Pro) if you're on the free plans of Granola, Linear and Slack"
last_verified: "Oct 2026 (desk-checked, not run end-to-end)"
date: "2026-10-14"
---

# Today's calls, ticketed before tomorrow

**Chain:** Granola → Claude (scheduled task) → Linear → Slack

## Why now

This combo has been possible to fake with copy-paste for a while. Three changes make it worth automating now:

- **Claude's scheduled tasks run remotely.** They run on their cadence "even when your computer is asleep or the Claude Desktop app is closed", with the same connectors as a normal Cowork session. The ones that stay local are tasks needing local files or apps, and on Pro and Max, tasks created before Oct 6 on your computer. ([Help Center](https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork))
- **Granola's MCP connector is on every plan, including the free Basic plan.** On Basic it covers your own notes from the last 30 days, which is plenty for a daily job. ([Granola + Claude](https://www.granola.ai/integrations/claude), [MCP docs](https://docs.granola.ai/help-center/sharing/integrations/mcp))
- **Linear's official MCP server** can search, create and update issues from inside Claude. ([Linear integration](https://linear.app/integrations/claude))

## Who it's for

Anyone whose real work list is buried in meeting notes. That means founders, chiefs of staff, product leads and agency account leads. It suits people who already use (or would happily use) Linear as the place commitments go to live.

## What you get

Every weekday evening, without you opening anything:

- Each concrete action item from that day's calls becomes a **Linear issue** in your chosen team. It gets the `from-call` label, lands in Triage, has a verb-first title and carries the meeting it came from.
- **No duplicates:** the task checks Linear for an existing issue from the same meeting before it creates one.
- One **Slack recap** in a channel you choose: meetings covered, decisions made, issues created (with links), and anything it deliberately skipped.
- On days with no meetings, nothing gets posted.

## You'll need

| Tool | Plan you need | Current price (Oct 2026) | Link |
|---|---|---|---|
| Granola | Basic (free) works. Business for transcripts and full history | $0; Business $14/user/mo | [granola.ai/pricing](https://www.granola.ai/pricing) |
| Claude (scheduled tasks + connectors) | Any paid plan: Pro, Max, Team, Enterprise | Pro $20/mo, or $17/mo billed annually | [claude.com/pricing](https://claude.com/pricing) |
| Linear | Free works to start (2 teams, 250 issues). Basic for unlimited issues | $0; Basic $10/user/mo billed yearly | [linear.app/pricing](https://linear.app/pricing) |
| Slack | Any workspace where you're allowed to connect Claude | Varies | [Slack MCP + Claude](https://docs.slack.dev/ai/slack-mcp-server/connect-to-claude) |

## Setup

### 1. Make Granola notes machine-readable (Granola, 10 min)

Install Granola (Mac, Windows, iOS or Android) and connect your calendar. Then create a **custom note template** called `Decisions & Actions` and set it as your default for external and internal meetings:

```markdown
## Context
(1–2 lines: who, what, why this meeting happened)

## Decisions
- (decision) — (who decided)

## Action items
- [Owner] (verb-first action) — due (date if stated, otherwise "none stated")

## Open questions
- (question) — (who owes the answer)
```

Consistent headings are what make the scheduled task reliable. Claude reads `Action items` far better than a paragraph of prose.

### 2. Prepare Linear (Linear, 5 min)

- Pick the team the issues should land in (e.g. `OPS`).
- Create a label: `from-call`.
- Make sure the team has a **Triage** status turned on (Team settings → Triage), so nothing auto-lands in someone's active sprint.

### 3. Pick a Slack channel (Slack, 2 min)

Create `#daily-recap` (or use a DM-to-self channel at first). Keep it private until you trust the output.

### 4. Connect the three tools to Claude (Claude, 5 min)

In Claude: **Settings → Connectors**, then connect **Granola**, **Linear** and **Slack**. Each one is a browser OAuth sign-in, no API keys. Slack's MCP integration may need your workspace admin to approve it.

### 5. Dry-run in a normal conversation first (Claude, 10 min)

Open a new Cowork task (or a regular conversation with all three connectors on) and paste the full prompt from step 6, but add this line at the top:

```text
DRY RUN: do not create Linear issues or post to Slack. Show me exactly what you would create and post.
```

Run it at the end of a day with real meetings. Fix your template or the team and label names until the dry run looks right.

### 6. Create the scheduled task (Claude, 5 min)

Click **Scheduled** in the left sidebar → **New task** → **Set up manually**, and fill in:

- **Task name:** `Daily calls → Linear + Slack`
- **Approval mode:** the most conservative option (approve actions) for the first week. Loosen it once you trust it.
- **Frequency:** **Weekdays**, at a time after your last meeting usually ends (e.g. 6:30 PM).
- **Model:** default is fine.
- **Folder:** leave empty. This task only uses connectors, which is what lets it run remotely.

**Prompt:**

```text
You are my end-of-day operations assistant. Work only from my Granola notes for
meetings that happened TODAY (my local time zone). Use tools in this order:
Granola first, then Linear, then Slack.

1) GRANOLA
- List today's meetings. For each, read the notes. Use the "Action items",
  "Decisions" and "Open questions" sections if present.
- If there were no meetings today, stop and do nothing else.

2) DECIDE WHAT BECOMES AN ISSUE
Create an issue only for a concrete, verifiable action that someone on OUR side
owes. Skip:
- personal reminders, vague intentions ("we should think about…"), and actions
  owed by external people (list those in the recap instead);
- anything involving HR, legal, compensation, health, or a named individual's
  performance (list it in the recap as "Skipped: sensitive – handle manually",
  with no details).

3) LINEAR (team: OPS)
For each action:
- First search Linear for an existing issue whose description contains
  "granola-meeting: <meeting id or title + date>" and a similar title. If one
  exists, do not create a duplicate; mention it in the recap as "already filed".
- Otherwise create an issue with:
  - Title: verb-first, max 70 characters, no trailing period.
  - Description:
      What: one or two sentences.
      Why: the context from the meeting, one sentence.
      Source: "<meeting title>", <date>, with attendees' first names only.
      granola-meeting: <meeting id or title + date>
  - Label: from-call. Status: Triage. Priority: none unless the notes say
    "urgent" or give a date within 2 working days (then High).
  - Assignee: only if the owner's name exactly matches one Linear team member;
    otherwise leave unassigned.
  - Due date: only if a date was explicitly stated.

4) SLACK (#daily-recap only; never DM anyone, never post anywhere else)
Post one message:
*Today's calls: <weekday, date>*
• <N> meetings: <titles, comma-separated>
*Decisions*
• <decision> (<meeting>)
*Filed in Linear*
• <issue title> → <issue link> (<assignee or "unassigned">)
*Waiting on others*
• <action owed by external person> (<meeting>)
*Skipped*
• <count> items (already filed / sensitive / too vague)
Keep it under 200 words. No emoji except bullets.
```

### 7. Test on demand, then supervise for a week

On the Scheduled page, open the task and use **Run on demand** once. Then for the first five weekdays, skim the Slack recap and the new Triage issues each morning:

- Titles too vague? Tighten step 2 of the prompt.
- Duplicates? Check the `granola-meeting:` line is actually being written.
- Wrong owners? Make the template capture full names that match Linear.

## Time to set up

About 45 minutes (estimate, not timed), most of it the dry run. Then about five minutes a day for a week of supervision.

## Cost

- **Minimum:** Claude Pro **$20/mo** ($17/mo annual) + Granola Basic and Linear Free at $0, on the Slack workspace you already have.
- **Realistic for a small team:** + Granola Business ($14/user/mo) for transcripts and full history, + Linear Basic ($10/user/mo) once you pass 250 issues.

Prices are list prices as of Oct 14, 2026.

## Gotchas

- **Slack-first can fail in scheduled runs.** A [reported bug](https://github.com/anthropics/claude-code/issues/73863) says Cowork scheduled tasks can fail to authenticate when Slack is the first (or only) connector called. The prompt calls Granola first on purpose. If Slack still fails, disconnect and reconnect it.
- **Linear renamed its write tools.** Linear's MCP moved from `create_issue`/`update_issue` to `save_issue`. Older sessions can hold a stale tool list and throw "Tool not found". Reconnect or restart the client. ([issue](https://github.com/linear/linear/issues/1049))
- **Granola Basic limits.** Over MCP, Basic reaches only *your own* notes from the last 30 days, with no transcripts and limited search and folder tools. Notes in shared folders that someone else owns won't show up.
- **Linear Free caps at 250 issues.** A busy calendar can hit that in a couple of months. Archive aggressively or plan for Basic.
- **"Cowork is now just Claude."** Claude is rolling out a merged chat-and-Cowork experience to Pro and Max. If you don't see Chat/Cowork options, create the task from any conversation by describing it and its schedule, then click **Schedule**. The menu path in step 6 may look different.
- **Consent and confidentiality.** Tell people you're taking AI notes, and think twice before client details go into a widely read Slack channel. The prompt keeps sensitive items out of both tools, but it's a prompt, not a policy.

## Remix

- **Swap the destination:** Asana, Notion or Jira instead of Linear, as long as there's a connector that can create tasks.
- **Weekly instead of daily:** run Fridays at 4 PM over "this week's meetings" and add a "commitments I made" section for yourself.
- **Client-facing version:** add a step that drafts (does not send) a follow-up email per external meeting for you to review.

## Freshness log

- **Oct 14, 2026:** First published. Desk-checked against Claude's scheduled-tasks help article, Granola's MCP docs and pricing, Linear's Claude integration page and pricing, and Slack's MCP docs.

---

*Last verified: Oct 2026 (desk-checked, not run end-to-end). We checked every step, setting and price against the vendors' current docs. We have not yet run this chain live. If a step doesn't match what you see, reply and tell us. It'll be fixed in the next refresh.*
