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 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.
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.

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

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.

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.

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.













