Claude Cowork Prompts for Agency Owners

If you run an agency, your days are split across clients. Every one of them thinks they're your only client. Keeping context straight across five, ten, fifteen accounts is the hardest part of the job.

These are scheduled tasks for Claude Cowork built specifically for agency workflows. Each one runs on a schedule, pulls context from your connected tools, and delivers something useful without you lifting a finger.

Want to see what these agents actually produce? Check out the full use case breakdowns for agencies, with example outputs and copy-paste prompts for each workflow.

To set any of these up: paste the prompt into Cowork and say "Set this up as a scheduled task." Replace [your-email@gmail.com] with your own address.


1. Daily client work plan

Schedule: Every weekday at 8:00 AM

Start every day knowing what each client needs from you. No digging through Slack, no checking five different project boards.

Run every weekday at 8:00 AM.

Step 1: Use the Google Calendar connector to pull all events scheduled for
today. For each event, record: event title, start time, end time, and
attendee names.

Step 2: Use the Granola connector to pull all meeting notes from the last
24 hours. For each note, extract: meeting name, decisions made, and any
action items where I am the assigned owner.

Step 3: Use the Slack connector to pull all messages from the last 24 hours
where my name is directly mentioned or a message is flagged as urgent. For
each, record: channel name, sender name, and a one-line summary of what is
needed.

Step 4: Use the Notion connector to pull all tasks across my active client
project pages that are either overdue or due today. For each task, record:
task name, project name, and due date.

Step 5: Combine everything into a single daily work plan. Format:
- Section 1: Today's Schedule (calendar events in chronological order)
- Section 2: Action Items Carried Forward (from yesterday's meetings)
- Section 3: Flagged Messages (Slack mentions needing responses)
- Section 4: Overdue / Due Today (Notion tasks)
- Section 5: Top 3 Priorities (your judgment call based on urgency and
  deadlines)

Save the plan to projects/daily-plans/YYYY-MM-DD.md.

Step 6: Use the Gmail connector to send the plan to [your-email@gmail.com].
Subject: "Daily Work Plan — [YYYY-MM-DD]". Body: the full plan.

2. Pre-call brief

Schedule: Every day at 10:00 PM

Walking into a client call without context is how you lose trust. This runs the night before and surfaces everything relevant so you're already oriented. See the full pre-call briefs use case for example output.

Run every day at 10:00 PM.

Step 1: Use the Google Calendar connector to pull all events scheduled for
tomorrow. Filter to only events with at least one external attendee (not
from your own domain).

Step 2: For each qualifying event, use these connectors to gather context:
- Gmail connector: find the 3 most recent email threads with each attendee
- Granola connector: find the most recent meeting notes from any previous
  call with these attendees
- Notion connector: check if any project page references these attendees
  or their company
- Slack connector: find the 5 most recent messages mentioning the attendee
  name or their company name

Step 3: For each qualifying event, write a pre-call brief using this exact
format:

## Pre-Call Brief — [Event Title] — [Time]
**Attendees:** [Names]

**What this meeting is about**
[2-3 sentences based on full context, not just the calendar event title]

**Three things likely to come up**
1. [Point]
2. [Point]
3. [Point]

**Open items to resolve on this call**
- [Item from a previous conversation, or "None"]

**One question to ask**
> [Question]

**Recent context**
- Last interaction: [Date] — [One-line summary]
- Relevant news or updates: [Finding, or "None found"]

Step 4: Save each brief as
projects/[relevant project]/call-prep/YYYY-MM-DD-[attendee-last-name].md.

Step 5: Use the Gmail connector to send all briefs to
[your-email@gmail.com]. Subject: "Call Prep — [YYYY-MM-DD]". Body: all
briefs in order of meeting time. If no external meetings are scheduled for
tomorrow, send: Subject "Call Prep — [YYYY-MM-DD]", Body: "No external
meetings tomorrow."

3. Scope creep alert

Schedule: Every other Friday at 3:00 PM

Scope creep is the silent margin killer. By the time you notice, you've already done the extra work for free. This checks what was agreed against what was actually done or requested. See the full scope creep detection use case for a detailed breakdown.

Run every other Friday at 3:00 PM.

Step 1: Pull the list of active clients from CLAUDE.md. For each client,
use the Notion connector to find the original project agreement or proposal
page. If not found in Notion, check the client's project folder for any
proposal or SOW document. Extract: agreed deliverables, agreed timeline,
and any stated hour or volume constraints.

Step 2: Use the following connectors to pull all work done or requested
since the project started:
- Notion connector: all tasks created and completed under the client's
  project page
- Slack connector: all threads in client-related channels referencing work,
  requests, or deliverables
- Granola connector: all meeting notes from calls with this client

Step 3: Compare what was agreed against what was actually done or
requested. For each item falling outside the original agreement, record:
- What was done or requested
- Where it was agreed to — Slack message, Granola note, Notion task — or
  note if it was never formally agreed
- Rough estimated time cost in hours

Step 4: Save the report as
projects/[client-name]/scope/YYYY-MM-DD-scope-check.md using this format:

# Scope Check — [Client Name] — [YYYY-MM-DD]

## In Scope
| Deliverable | Status | Notes |
|-------------|--------|-------|
| ...         | Done / In progress / Not started | ... |

## Out of Scope (flagged)
| Item | Source | Est. Hours | Recommended action |
|------|--------|------------|--------------------|
| ...  | Slack / Granola / Notion | N | Absorb / Raise with client |

## Summary
- Total out-of-scope items: [N]
- Estimated extra hours absorbed: [N]
- Recommended next step: [Absorb and log / Schedule a scope conversation]

Step 5: Use the Gmail connector to send the report to
[your-email@gmail.com]. Subject: "Scope Check — [Client Name] —
[YYYY-MM-DD]". Body: the full report.

4. New client onboarding

Schedule: On-demand

The first week with a new client sets the tone for the whole relationship. This builds the project structure, creates the task list, and drafts the welcome email in one shot.

When triggered, ask me for the following before doing anything:
- Client name
- What they do (one sentence)
- What we are doing for them (one sentence)
- Key contacts: name, email, role (can be multiple)
- Project start date and end date or retainer term
- Billing amount and payment terms

Then execute these steps in order:

Step 1: Create a project folder at projects/[client-name]/ with these
subfolders: /reports, /call-prep, /scope, /deliverables, /invoices.

Step 2: Create a README at projects/[client-name]/README.md using this
format:

# [Client Name]

## Overview
[What they do] — [What we are doing for them]

## Key Contacts
| Name | Email | Role |
|------|-------|------|

## Project Details
- Start date: [date]
- End date / term: [date or "Ongoing retainer"]
- Billing: [amount and terms]

## Deliverables
| Deliverable | Due Date | Status |
|-------------|----------|--------|
| ...         | ...      | Not started |

## Notes
[Empty — for ongoing use]

Step 3: Add the following tasks to TASKS.md under a new section
"## [Client Name] — Onboarding":
- [ ] Schedule kickoff call
- [ ] Request all required accounts and access
- [ ] Confirm project brief and deliverables in writing
- [ ] Scope first deliverable
- [ ] Send welcome email

Step 4: Add the client to the active clients table in CLAUDE.md.

Step 5: Draft a welcome email using this structure:
- Paragraph 1: Who we are and what we are building together (2 sentences)
- Paragraph 2: What they can expect in the first week (3 bullet points)
- Paragraph 3: One clear next step with a specific ask

Step 6: Use the Gmail connector to send the welcome draft to
[your-email@gmail.com] for review. Subject: "DRAFT — Welcome Email for
[Client Name]". Do not send to the client. This is for review only.

5. Retainer health check

Schedule: First Monday of every month at 9:00 AM

The worst way to find out a retainer client is unhappy is when they cancel. This surfaces the warning signs before that conversation happens. See the full retainer health monitoring use case for how the classification logic works.

Run on the first Monday of every month at 9:00 AM.

Step 1: Pull the list of active retainer clients from CLAUDE.md. For each
client, use the Notion connector to find the retainer terms — hours or
deliverables included per month, billing amount, and renewal date.

Step 2: Calculate each client's usage for the current month to date:
- Use the Notion connector to count tasks completed and in progress this
  month under their project
- Use the Granola connector to count hours logged in calls this month
- Compare the total against their monthly retainer allowance and calculate
  the percentage consumed

Step 3: Use the following connectors to assess engagement health for each
client:
- Gmail connector: find the date of the last email exchanged with this
  client
- Slack connector: find the date of the last Slack message from or about
  this client
- Granola connector: find the date of the last recorded call

Use the most recent of these three dates as the "last meaningful
interaction" date.

Step 4: Classify each client into one of these four categories:
- Healthy: 40-90% of retainer used, last interaction within 7 days, no
  open issues
- Underusing: less than 40% of retainer used with fewer than 7 days left
  in the month (churn risk)
- Overusing: more than 100% of retainer consumed (billing or scope
  conversation needed)
- Disengaged: no meaningful interaction in 14 or more days

Step 5: For every client not classified as Healthy, write one specific
recommended action to take this week.

Step 6: Save the report as projects/retainer-health/YYYY-MM-DD.md using
this format:

# Retainer Health Check — [Month YYYY]

| Client | Status | Usage | Last Interaction | Renewal Date | Action |
|--------|--------|-------|-----------------|--------------|--------|
| ...    | Healthy / Underusing / Overusing / Disengaged | [X]% | [Date] | [Date] | [Action or —] |

## Clients Needing Attention

### [Client Name] — [Status]
- Usage: [X of Y hours / deliverables] ([X]%)
- Last interaction: [Date] via [Gmail / Slack / Granola]
- Recommended action: [Specific action]

Step 7: Use the Gmail connector to send the report to
[your-email@gmail.com]. Subject: "Retainer Health Check — [Month YYYY]".
Body: the full report.

6. Weekly billing and utilization report

Schedule: Every Monday at 8:00 AM

Revenue is vanity if your utilization is low. This pulls what you billed, what you delivered, and where the gaps are.

Run every Monday at 8:00 AM.

Step 1: Use the Stripe connector to pull all successful charges from the
last 7 days. For each charge, record: client name, amount, currency, and
date.

Step 2: Use the Notion connector to pull all tasks completed this week for
each client. For each task, record: task name, estimated hours (if
tracked), and project name.

Step 3: Calculate for each client:
- Revenue received this week
- Tasks completed this week
- Estimated hours delivered vs. retainer hours included
- Utilization percentage: hours delivered / hours included

Step 4: Use the Notion connector to check for any invoices marked as
overdue or pending. For each, record: client name, invoice amount, and
days overdue.

Step 5: Save the report as
projects/billing/weekly/YYYY-MM-DD.md using this format:

# Weekly Billing Report — [Week of YYYY-MM-DD]

## Revenue Summary
- Total received: $[amount]
- Total outstanding: $[amount]
- Clients billed: [count]

## Client Breakdown
| Client | Revenue | Tasks Done | Hours | Utilization |
|--------|---------|------------|-------|-------------|
| ...    | $...    | N          | N/N   | N%          |

## Overdue Invoices
| Client | Amount | Days Overdue | Last Follow-up |
|--------|--------|--------------|----------------|
| ...    | $...   | N            | [Date or "None"] |

## Notes
[Anomalies, new clients, refunds, or billing conversations needed]

Step 6: Use the Gmail connector to send the report to
[your-email@gmail.com]. Subject: "Billing Report — Week of
[YYYY-MM-DD]". Body: the full report.

7. Content repurposing pipeline

Schedule: Every Tuesday at 9:00 AM

Most agencies create content but never repurpose it. One blog post should become three LinkedIn posts, a newsletter, and a handful of tweets. This does the conversion automatically. See the full content repurposing use case for example output across all formats.

Run every Tuesday at 9:00 AM.

Step 1: Use the Notion connector to check for any long-form content created
or updated in the last 7 days — blog posts, case studies, newsletters, or
reports. Also check the projects/content/ folder for any new documents
added in the last 7 days.

Step 2: If no new content is found, save a log entry to
projects/content/repurposed/YYYY-MM-DD-log.md noting "No new content to
repurpose this week." Use the Gmail connector to send: Subject "Content
Pipeline — [YYYY-MM-DD] — Nothing to process", Body: "No new content
found this week." Then stop.

Step 3: For each piece of content found, produce the following repurposed
versions. Match the tone and voice of the original exactly — do not add
filler or change the perspective:

**LinkedIn post — Hook-driven**
Open with a counterintuitive claim or surprising finding from the content.
3-5 short paragraphs. End with one question or call to action. Max 1,200
characters.

**LinkedIn post — Story-driven**
Open with a specific moment or example from the content. Build to the key
insight. End with the takeaway. Max 1,200 characters.

**LinkedIn post — Insight-driven**
Open with a data point or key finding. Expand with 2-3 supporting points.
Close with one clear implication. Max 1,200 characters.

**Email newsletter**
150-250 words. Conversational tone. Open with the core idea. One section
of supporting points. Close with one specific call to action.

**5 X posts**
Each under 280 characters. One idea per post. No hashtags. No emojis
unless present in the original source.

Step 4: Save all versions as separate files inside
projects/content/repurposed/YYYY-MM-DD-[source-title]/:
- linkedin-hook.md
- linkedin-story.md
- linkedin-insight.md
- email-newsletter.md
- x-posts.md

Step 5: Use the Gmail connector to send all repurposed versions to
[your-email@gmail.com]. Subject: "Content Repurposed — [Source Title] —
[YYYY-MM-DD]". Body: all five versions in order, each with a clear label
as a heading.

Where to start

Don't set up all seven at once. Pick the one that fixes your biggest pain this week.

If you're drowning in client context: daily client work plan.

If you keep getting surprised by scope creep: scope creep alert.

If retainer clients are churning and you don't know why: retainer health check.

Set one up. Run it for a week. Add the next one when the first feels automatic.

Need the full Cowork setup first? Start with the setup guide.