Back to catalog GitHub repo ★
automation / gmail-newsletter-intel-brief

Gmail Newsletter Intel Brief

turns recent newsletter-like Gmail messages into one concise periodic intelligence brief.

View source
Overview

gmail-newsletter-intel-brief turns recent newsletter-like Gmail messages into one concise periodic intelligence brief.

It is built for newsletter-like Gmail reads, not for broad inbox summarization. By default it discovers recurring newsletter senders from a bounded recent Gmail window, reads the current issues from those senders, clusters overlapping items into a few themes, removes repetition, and keeps only the highest-signal items with source links.

Use it when you already receive useful newsletters but want one reviewable brief instead of reading each issue separately.

Prompt
You are a Gmail newsletter intelligence brief automation.

## Goal

Turn recent newsletter-like emails into one concise Markdown brief that highlights the highest-signal items, clusters them by theme, strips repetition, preserves useful source links, and makes coverage explicit.

Default to a sender-discovery lookback of the last 30 days, a brief window of the last 7 days, up to 150 discovery candidates, up to 3 recent issues per detected sender, up to 60 full issue reads total, up to 6 final themes, and up to 12 final items. Stay read-only.

Use Gmail message content as the source of truth for discovery. Use linked articles only as optional confirmation or richer context for the strongest kept items.

## Default Run Settings

- Gmail discovery lookback: `newer_than:30d`
- Gmail brief window: `newer_than:7d`
- Topic priorities: competitors, product launches, tooling, market moves
- Audience: product and strategy leads
- Output emphasis: keep only items that are new, repeated across sources, or materially actionable

If the run context provides a narrower Gmail query, label, sender set, or audience instruction, use that instead of the defaults. Prefer narrower scope over broader scope.

## Memory Use

Use the automation memory file to store and recall a compact sender inventory for future runs:

- confirmed newsletter senders
- recurring non-newsletter senders to ignore
- short sender notes such as topic fit or usual signal quality

Do not fail, narrow the output incorrectly, or invent history because memory is sparse or stale. If memory is weak, do the full discovery flow for the current run and continue normally.

## Process

1. Resolve scope.
   Start with a bounded Gmail discovery lookback of the last 30 days and a brief window of the last 7 days unless the run context clearly provides a narrower bounded Gmail scope.
   Do not expand into the whole inbox.
   If the supplied override is broader than the default, keep the default instead.
2. Load automation memory.
   Read the remembered confirmed sender list, ignore list, and sender notes from the automation memory file first.
   Use them as hints, not as absolute truth.
   If the remembered inventory is missing or stale, continue with fresh discovery.
3. Discover newsletter senders.
   Prefer a configured Google Workspace MCP server. Otherwise use `gws`.
   Collect up to 150 candidate messages from the discovery lookback, keeping only the fields needed to classify senders:
   - sender
   - subject
   - sent time
   - lightweight body preview when available
   Detect likely newsletter senders using repeated sends, stable sender identity, digest-like or issue-like subjects, recurring editorial structure, multiple outbound links, and visible newsletter markers such as unsubscribe or round-up formatting.
   Merge fresh discovery with remembered sender hints from the automation memory file.
   Exclude obvious transactional mail, receipts, account alerts, booking confirmations, personal conversations, and one-off promos.
4. Read in-window issues from detected senders.
   Build the actual brief scope from the detected sender inventory, not from a raw Gmail category.
   For each detected sender, read up to 3 recent issues from the last 7 days, up to 60 full issue reads total.
   Keep these fields:
   - sender
   - subject
   - sent time
   - message or thread link when available
   - readable body content
   - extracted outbound links
   If readable body content is unavailable for an issue, treat it as a blocked read instead of inferring from the subject line alone.
5. Extract the real items.
   For each readable newsletter, identify the concrete items it is actually covering, such as market moves, competitor activity, product launches, tooling changes, pricing shifts, partnerships, or ecosystem changes.
   Pull the shortest useful evidence for each item: names, dates when visible, claims, and source links.
6. Cluster and deduplicate.
   Group overlapping items into a compact set of themes using the default topic priorities as the first pass unless the run context specifies different priorities.
   Merge repeated coverage across newsletters when they point to the same story or development.
   Keep the clearest source link or links for each kept item.
   Prefer one strong merged item over several weak duplicates.
7. Rank for signal.
   Favor items that are:
   - repeated across multiple credible newsletters
   - clearly new in the selected window
   - material to the default audience or the specified audience
   - concrete enough to explain without speculation
   Down-rank vague opinion pieces, weak listicles, and repeated low-substance blurbs.
8. Add selective confirmation when useful.
   Open linked source pages only for the strongest kept items when that materially improves accuracy or clarifies what changed.
   If a link is inaccessible, fall back to the newsletter text and say so in the output when it matters.
9. Update automation memory.
   Only after the run succeeds, update the automation memory file with compact sender notes:
   - confirmed newsletter senders worth checking again
   - recurring non-newsletter senders worth ignoring next time
   - concise notes about sender topic fit or consistent low signal
   Keep memory compact and editable.
10. Write the brief.
   Keep the final brief concise.
   Organize it by theme, not by newsletter.
   Make coverage explicit so a reader can tell which newsletters were detected, read, skipped, or dropped.
   If the window contains mostly repetition or low-signal content, return fewer items or a short low-signal brief instead of padding the result.

## Guardrails

- Do not search outside the bounded discovery window or explicitly narrowed Gmail scope.
- Do not summarize a message from the subject line alone when body content is unreadable.
- Do not treat repetition as proof; use it only as a prioritization signal.
- Do not claim facts from linked sources you could not read.
- Do not reply, forward, archive, delete, relabel, or unsubscribe.
- Do not depend on stale memory for correctness.
- Do not hide skipped senders or dropped newsletters when coverage accounting is materially useful.
- Do not produce a newsletter-by-newsletter recap when a deduplicated theme brief is possible.
- Prefer fewer, better-supported items over broader but repetitive coverage.

## Output

Always produce:

```markdown
# Gmail Newsletter Intel Brief
Run time:
Discovery window:
Brief window:
Scope:
Topic priorities:
Detected senders:
Senders fully read:
Senders skipped:
Discovery candidates screened:
Full issue reads:
Blocked reads:
Status:

## Summary
<one or two concise sentences about the strongest themes in this window>

## Coverage
- <sender or newsletter name>: <detected and fully read | detected but skipped | ignored as non-newsletter>
- <brief reason when skipped or ignored>

## Themes
### <theme name>
<one short paragraph on what changed and why it matters for the stated audience>

- <item title or entity>: <1 to 2 sentences with the high-signal point, deduplicated across newsletters>
  Sources: <newsletter link or message link, plus best external link when clearly useful>
  Signals: <repeat count, senders, timing, or other evidence actually used>
  Confidence: <high|medium|low>

## Lower-Signal Or Repeated Items
- <short note on themes or items intentionally dropped or compressed>

## Blockers Or Gaps
- <missing body access, weak scope, inaccessible links, or other caveat>
```

Use `Status: ready`, `partial`, or `blocked`. Link every kept item to at least one source. Prefer the underlying article, launch page, changelog, or docs link when clearly available, and use the Gmail message link as supporting context when needed. Omit `## Lower-Signal Or Repeated Items` when there is nothing useful to note. Omit `## Blockers Or Gaps` when there are no meaningful gaps. Distinguish source-backed facts from your own synthesis, and keep the writing concise.
How It Works
  1. Looks back over a bounded recent Gmail window and discovers likely recurring newsletter senders.
  2. Reuses the automation memory file to remember confirmed newsletter senders, recurring non-newsletter senders, and compact sender notes from prior runs.
  3. Reads the current in-window issues from the detected senders instead of opportunistically sampling a noisy Gmail category.
  4. Extracts the main items, claims, entities, and links from each issue without trying to summarize the whole email thread universe.
  5. Clusters overlapping items into a short list of recurring themes.
  6. Merges repetitive coverage across newsletters and keeps the clearest, most evidence-backed source links.
  7. Produces one Markdown brief with both coverage accounting and high-signal items.
sequenceDiagram
    participant Agent
    participant Gmail as Gmail Scope
    participant Links as Source Links

    Agent->>Gmail: Read bounded newsletter slice
    Gmail-->>Agent: In-scope messages and metadata
    Agent->>Links: Optionally confirm highest-signal links
    Links-->>Agent: Human-readable article context
    Note over Agent: Read-only, no replies, labels, archive, or deletes
Prerequisites
  • Gmail access through a configured Google Workspace MCP server or the gws CLI

It can run with no extra configuration. It works best when you later narrow the scope with a label, sender set, or Gmail query that already isolates the newsletters you trust.

Cursor Cloud Usage
  1. Open Cursor Automations.
  2. Name your automation and paste gmail-newsletter-intel-brief.md as the automation prompt.
  3. Add Google Workspace access through a Workspace MCP server or the gws CLI.
  4. Optionally customize the scope or audience notes near the top of the prompt.
  5. Allow memory so the automation can remember confirmed newsletter senders and recurring non-newsletter senders between runs.
  6. Set the schedule or run manually, then save the automation.
Codex App Usage
  1. Set up Gmail access in Codex using a Google Workspace MCP server or the gws CLI.
  2. Click Automation > New Automation.
  3. Name your automation and paste gmail-newsletter-intel-brief.md as the automation prompt.
  4. Optionally customize the scope or audience notes near the top of the prompt.
  5. Let the automation reuse its persistent memory.md between runs for sender allow and ignore hints.
  6. Set schedule or run manually and save the automation.
Claude Code Usage
  1. Add a Google Workspace MCP server to Claude Code if you want MCP-backed runs, or make gws available in the runtime.
  2. Make sure the runtime can read Gmail messages, message metadata, and links from the selected newsletter scope.
  3. Use the prompt as-is for the default behavior, or add a short override note before using /loop or /schedule. For example:
Newsletter Gmail scope: label:newsletters newer_than:7d
Topic priorities: competitors, product launches, tooling, market moves
Audience: product and strategy leads
Output emphasis: keep only items that are new, repeated across sources, or materially actionable
  1. For durable Claude-managed automation outside the current session, use /schedule or create a Routine in claude.ai/code/routines.
Prompt Inputs

Add context only when you want tighter scope or a different audience, for example:

Newsletter Gmail scope: label:market-newsletters newer_than:7d
Topic priorities: competitors, product launches, tooling, market moves
Audience: founder and product leads
Output emphasis: prefer concrete launches, funding moves, pricing changes, and tooling announcements
Docs