JOURNAL

Claude's morning brief said "no new deals". Two had been won on Friday afternoon

Anthropic's first rule for a scheduled AI agent is to read from a bookmark, not the last 24 hours. A test of a sales team's morning brief over eleven weekdays shows why: with the 24-hour window, 22 to 23 of 73 events never reached a brief, most of Friday afternoon's won deals among them. With a bookmark, nothing was missing. The run steps are free.

14 October 2026·10 min read·Claude · AI agents · AI workflow automation · Claude Managed Agents · claude news

TL;DR: At 07:32 on a Monday, Claude's morning brief for a sales team said "no new deals". Two had been won on Friday afternoon, worth DKK 228,000 a year. Claude filed one under "outside the period" and never named the other, because the brief had been told to cover the last 24 hours.

On 8 October Anthropic showed how it builds a scheduled agent that writes a daily brief, and the first rule reads: read from a bookmark, the time of the newest item the brief reported last time, not from a fixed window. I had Claude Code test the rule over eleven weekdays, 73 invented CRM and inbox events, three runs per version. Told to cover the last 24 hours, the brief never reported 22 to 23 of the events, among them 5 to 6 of 10 won deals, because Friday afternoon fell between Friday's window and Monday's. With a bookmark, nothing was missing. The prompt and run steps are free: download the zip.

The test in 36 seconds. Reconstructed from the logged calls in Claude Code, with Claude's lines translated from the Danish and the original shown beneath.Film: Brinvik

The film shows one Monday. In the demo below you can see all eleven mornings for both versions and all three runs, click an event to see which brief it reached, and read every brief as Claude wrote it.

Switch between the two versions and click the Monday pills. Nothing leaves the page, and every company and person is invented.

On 8 October Anthropic published an example of a scheduled agent that reads Slack and GitHub every morning and writes a short brief on what changed. It runs on Claude Managed Agents with a schedule, and the code is on GitHub.

The post ends with six rules. The first is about time, the second about a source that fails. "A common mistake is asking the agent to read a fixed window like 'the last 24 hours.' A late run leaves a gap and an early run repeats items," Anthropic writes. The second: when a source can't be read, the brief mustn't look like a quiet day.

Anthropic names a third mistake of the same kind, the agent calling this morning "yesterday" because it works in the server's time zone. The last four cover re-checking every item just before the brief goes out, counting it as sent only once Slack confirms it, reading the team's preferences from a store the agent can't edit, and read-only access with a spending cap. I haven't tested those here.

Monday, 07:32: "no new deals"

The test is a morning brief for the sales team at an invented company, Lagerlys ApS, which sells inventory software to wholesalers. Two sources, as in Anthropic's example: the CRM with 45 deal changes and the inbox with 28 messages from customers, from Friday 11 to Monday 28 September. Each customer has one coherent story, from first meeting to a deal won or lost, and six of the ten wins close on a Friday afternoon.

The brief runs every weekday at 07:32. Each morning Claude Sonnet 5.5, the model Anthropic's example uses, gets what the sources return for the last seven days.

One version is told: "The brief covers everything that happened in the last 24 hours." The other gets three rules instead: read from one bookmark per source, include everything newer, and if a source is missing, leave its bookmark and say so in the brief. It also ends with a line holding the new bookmarks. The rest of the prompt is identical. Two mornings are off on purpose: on Tuesday the 22nd the brief doesn't run until 11:47, and on Thursday the 24th the CRM is down. Both versions ran three times, 66 briefs in all, and every one is saved.

An animation on a light background with two cards, both the Monday brief at 07:32. The left one, the last 24 hours, says there are no new deals and lists Friday's won deal with Egelund as activity outside the period. The right one, from the bookmark, starts empty, then four lines arrive one at a time: the deals with Egelund and Bakkely and the two signed contracts, then a note of five more lines.
The same Monday in the first run, as Claude wrote it, translated from the Danish. Only the instruction about time differs.

On Monday 21 September, in the first run, Claude wrote (in Danish, translated here): "There are no new deals in the CRM and no new emails in the inbox in the last 24 hours (since Sunday at 07:32)." Further down, under "The latest activity is outside the period", it said: "The latest CRM change was Friday 18 September at 16:56: Egelund Byggemarked was won, DKK 48,000 a year (Julie)."

So Claude saw the deal and set it aside, because the prompt said it didn't count. It didn't mention Bakkely Reservedele at all, won at 15:18 the same Friday for DKK 180,000 a year. With the bookmark, the same model wrote nine lines that morning, both deals and both signed contracts. One version was given a poor instruction and followed it. So the fix for your own brief is to write the instruction about what the reader has already seen, never about the clock.

Where the 22 events went

An infographic on a light background. Eleven columns, one per morning, with a small square for each event, placed under the first morning that should have reported it. The top row is the last-24-hours version: hollow dark red squares under the three Mondays, where Friday afternoon and the weekend belong, one under the late Tuesday and two under Thursday, when the CRM was down. Every other square is black. The bottom row is the bookmark, where every square is black.
Where the events dropped out, first run. Friday afternoon belongs to Monday's column, and it's hollow. The other two runs look almost the same.

Across the three runs, 22, 22 and 23 of the 73 events never reached a brief with "the last 24 hours". With the bookmark the number was 0 in all three, and no event reached two briefs.

The gaps sit in three places. The biggest is Friday afternoon: 19 to 20 events across the three Fridays, because Monday's window starts on Sunday morning. The next is the late Tuesday. The 11:47 brief covered from 11:47 on Monday, so a change at 10:14 on Monday never made it, and an email at 10:21 on Tuesday made it twice, on Tuesday and again on Wednesday. The third is Thursday's outage, which I come to below.

The numbers flatter the 24-hour version slightly. Clock arithmetic alone puts 26 events outside the windows. Only 22 went missing because Claude sometimes mentioned an older event as background, as it did with Egelund on Monday, and here a mention counts as a report.

Thursday, when the CRM was down

I expected Thursday to show Anthropic's second rule in action: the agent reporting "nothing new" when a source is down. It didn't happen. In all six runs Claude said the CRM was missing. With the 24-hour window: "No CRM data came with this run, so there are no deal changes in the brief." With the bookmark: "I couldn't read the CRM today, so there are no deal updates in this brief." The difference only showed on Friday.

An infographic on a light background. Two CRM changes from Wednesday 23 September, a contract sent to Lindholt Grossisten and a lost deal, shown as two marks. Thursday is an empty dashed column labelled CRM down. Friday follows with two rows of three cells: in the bookmark row both marks reach Friday's brief in all three runs, in the last-24-hours row all six cells are empty and dark red.
Wednesday's two changes. With the bookmark they arrived on Friday. With the 24-hour window they never arrived.

On Friday morning the 24-hour window covered Thursday and Thursday night, so Wednesday's two CRM changes, a contract sent to Lindholt Grossisten and a lost deal, were too old. They never reached a brief in any of the three runs. The CRM bookmark was still on Tuesday, because Thursday's run hadn't moved it, and Friday's brief picked up both changes in all three runs.

Two caveats. Anthropic's own example doesn't have the flaw, because it uses bookmarks. And in Anthropic's case a source disappears completely, because the agent loses the tool to read it. Here the source was named in the prompt, so Claude could see it was missing. The test says nothing about whether Claude notices a gap nobody has named.

The three rules you can paste in today

If the agent or scheduled task that writes your brief has a sentence about time in it, "the last 24 hours", "since yesterday" or "overnight", replace it with one bookmark per source: the time of the newest item the brief reported last time. The next run then takes everything newer, whether it fires on a Monday, at 11:47 or after a public holiday.

An infographic on a light background with two text cards. The top one, with a dark red edge, is titled The last 24 hours, 1 rule, and holds the sentence: The brief covers everything that happened in the last 24 hours. The bottom one, with a black edge, is titled From the bookmark, 3 rules, and holds the three rules about one bookmark per source, including everything newer and naming a source that could not be read.
The only difference between the two prompts in the test, translated from the Danish. The rest was identical, apart from a last line about the new bookmarks.

The zip holds the run steps in English and Danish, ready to paste into an agent in Claude Managed Agents, a scheduled task in Claude, or Cowork. They carry three rules: read from the bookmark, treat a source you couldn't read as a gap rather than a quiet day, and only move the bookmarks once the brief has been sent. I haven't tested the last one. The file also holds both prompts, the 73 events, all 66 briefs and the script that ran the test, so you can repeat it.

What the run steps don't do: they don't decide what's important enough for a line. In the test every event was relevant on purpose, so a gap could be counted. And they don't make a schedule reliable. A run that never starts is still a missing brief. The bookmark only makes sure the next one covers the gap.

AI workflow automation for your sales team's morning brief

As a Claude consultant, I set up AI agents that read the CRM, the inbox and Slack and write the team's brief every morning. The hard part is rarely the model. It's getting it to say what it couldn't read, and finding out what your current brief has been skipping for weeks without anyone noticing. You can't see that in the brief itself, only by holding it up against the sources.

That's the AI workflow automation and Claude implementation work behind internal AI tools. You can check yours in five minutes: put Monday's brief next to the CRM's change log for Friday from 12:00 to 17:00. If something is missing, send me the prompt your brief runs on and a week's raw CRM export with the names removed, and I'll show you where it drops things. If you want to see another brief where one line from the team lead changed the result, read the renewals brief test.

FAQ

Frequently asked questions

Have an agent or a scheduled task in Claude read the CRM and the inbox every weekday and write a short brief to the team's channel. Give it one bookmark per source instead of a time window, so it picks up everything since the last brief. You can paste the run steps in the zip as they are.

Often because the prompt asks for the last 24 hours. On a Monday that only covers Sunday, and Friday afternoon drops out. In the test, 22 to 23 of 73 events never reached a brief that way. Replace the window with a bookmark.

In the test, Claude said the CRM was missing in all six runs. What decided the rest was the day after. With a bookmark, Wednesday's two changes arrived on Friday; with the 24-hour window, they never arrived.

The time of the newest item the agent reported from a source last time. The next run takes everything newer. Anthropic keeps it in a file, bookmarks.json, in the agent's memory between runs.

Yes. Anthropic's own example runs on Claude Managed Agents with a scheduled run and keeps the bookmarks in the agent's memory. The run steps also work in a scheduled task in Claude or Cowork, as long as the agent can store the bookmark somewhere for next time.

Anthropic's example posts to one Slack channel and only moves the bookmarks once Slack has confirmed the message arrived. The same idea holds for Teams or email. I haven't tested that part here.

The test used Claude Sonnet 5.5, which is also the model in Anthropic's example. It followed the instruction exactly. What decided the result was the sentence about time in the prompt.

Sources

How this article was made. This article was made together with AI. Overall: AI about 83 percent, Kim about 17 percent. Counting production alone, AI did about 95 percent. Claude Code wrote 73 invented events, built the test setup, ran and logged 66 briefs with Claude Sonnet 5.5, counted them and tested the demo in a browser before a word of the article was written. Three Claude agents acting as critical reviewers moved the opening to the Monday brief that saw Friday's deal and set it aside. Kim wrote the rules, the voice and the method in advance. The split is an informed estimate, not a measured log.

Portrait banner on a light background. The headline "Who did the work?", below it two numbers for AI and Kim, a bar divided in the same proportion, and eight phase bars with their own labels underneath.
The split is an informed estimate over the finished task, not a measured log.

Get new essays by email.

Roughly twice a month. Same voice. No list rental, no retargeting.

Protected by Cloudflare Turnstile. No challenge, no CAPTCHA. Brinvik never shares your address.