# Morning brief kit

A sales team's weekday morning brief, run by Claude Sonnet 5.5 on eleven mornings, two ways: once told to
cover "the last 24 hours", once given a bookmark per source. Built by Brinvik on 13 October 2026, from
Anthropic's reference daily-brief agent ("Building effective agent automations", claude.dev, 8 October
2026), which lists "read from a bookmark, not a fixed time window" as its first rule.

Article: https://brinvik.com/en/journal/claude-morning-brief-friday-afternoon
Dansk: https://brinvik.com/da/journal/claude-morgenbrief-fredag-eftermiddag

## What is in here

| File | What it is |
|---|---|
| `run-steps-en.md`, `run-steps-da.md` | The part to take: three run steps for your own morning-brief agent, in English and Danish |
| `prompt-window.txt`, `prompt-bookmark.txt` | The two system prompts the test used, exactly as sent |
| `events.json` | The 73 invented events: 45 CRM changes and 28 inbox messages, Friday 11 to Monday 28 September 2026 |
| `briefs.json` | All 66 recorded briefs, as Claude wrote them: 2 versions, 3 runs each, 11 mornings. Bold markers are stripped, and a line that carried a dash (usually the title line) is left out and flagged, never edited |
| `facts.json` | Every number in the article, computed by `score.py` |
| `make_events.py` | Rebuilds `events.json` from a fixed seed |
| `record.py` | Runs the eleven mornings through `claude -p` |
| `score.py` | Counts what reached a brief, what never did, and what reached two |

## Run it yourself

You need Claude Code (`claude -p`) on a plan that can run Claude Sonnet 5.5.

```
python3 make_events.py
python3 record.py window --reps 1
python3 record.py bookmark --reps 1
python3 score.py
```

The harness plays the platform. It decides the time of each morning, which sources answered, and for the
bookmark version it hands back the bookmarks the previous morning wrote. Two mornings are deliberately not
ordinary: Tuesday 22 September runs at 11:47 instead of 07:32, and on Thursday 24 September the CRM does
not answer, so its section is simply absent.

## What it does not prove

- Every event is relevant on purpose, so a miss can be counted. A real brief also has to decide what
  matters, and that is a different rule.
- The data is invented and tidy: one coherent story per company, Danish text, two sources.
- One model, Claude Sonnet 5.5, three runs per version. The bookmark version's 0 misses held in all three;
  that is three runs, not a guarantee.
- A brief that mentions an older event as context counts as reporting it again. That flatters the
  "last 24 hours" version, not the bookmark one.
- Nothing was posted anywhere. Anthropic's rule about moving the bookmarks only after a confirmed post
  is in the run steps and is untested here.
