Logo
Apdf tutorials October 2026 4 min read

How to Build a Morning Briefing Agent for Your Documents

A digest lists yesterday's reads; you still do the thinking. A briefing arrives with the thinking done: who moved, why it matters, who to call first, and what to open with. That last step — judgment over the data — is exactly what an agent adds.

The build is small because the pieces exist: your workspace is already connected over MCP, the agent already knows the tools, and Claude Code runs headless on a cron. The only thing to write is the standing prompt.

What you'll build
The message that starts the day — synthesized from every document's real sessions: “Call Karla first — she came back at 21:21 for the price page. Then Anja: she's fact-checking, offer the interview.”
MCP access needs Pro (14-day trial, no card)
1

Write the standing prompt

The prompt is the agent's job description — which tools to sweep, how to rank, and what a useful briefing looks like. Save it as briefing-prompt.md:

You are my document-engagement briefing agent. Every run:

1. Sweep: list-documents, then list-document-sessions for each —
   keep only sessions from yesterday.
2. Rank by signal strength: return visits beat deep reads beat
   full skims beat opens. Weigh dwell on money/decision pages
   extra. Use get-document-session when a pattern needs detail.
3. Brief me in this shape:
   - CALL FIRST: one name, the evidence, a suggested opener
     (grounded in what they read — never mentioning tracking).
   - THEN: two or three more, one line each.
   - QUIET: anything expected that did not happen (silent
     recipients on active deals).
4. Be honest about thin data — "one 8-second glance" is not
   interest, and say so.

The ranking rules matter more than the prose: they're the same signal hierarchy the follow-up playbook uses, handed to the agent as policy.

2

Read a real briefing

Run against a working workspace — eleven tracked documents, one Tuesday's reading — the agent swept 20+ session lists and came back with this:

You
Morning briefing, please.
Claude
apdf · list-documents, list-document-sessions ×11, get-document-session ×2
CALL FIRST — Karla Weiss (Studio Karla redesign proposal). She returned at 21:21 last night and spent 85 of 110 seconds on the Investment page — evening return + money page is the strongest signal in the book. Opener: payment phasing, not scope.

THEN:
• Anja Brandt (TechPost) re-opened the press kit straight to the fact sheet — she's verifying numbers for a draft; offer the founder interview today.
• Sandra Okafor read the July investor update cover to cover, 3m51s — her third straight and deepest; she should hear about the round early.
• Rachel Kim skimmed half the update in 20 seconds on her phone — aware, not engaged. Group-update tier.

QUIET: Tobias Brandt still hasn't opened any of three updates — that's a delivery problem or an answer. And nobody from Okafor Capital has touched their July report five days in.

Every claim maps to a session record — the 85 seconds, the fact-sheet return, the three-for-three streak. The agent's contribution is the ordering and the openers; the evidence is all data.

3

Put it on a schedule

Claude Code runs prompts headless with claude -p, which makes the briefing a cron job:

# one-time: connect the workspace
claude mcp add --transport http apdf https://apdf.io/mcp/main

# every weekday at 07:45
45 7 * * 1-5  cd /opt/briefing && claude -p "$(cat briefing-prompt.md)" >> briefings.log

Pipe the output wherever your morning lives — append a Slack post to the prompt (“then POST the briefing to this webhook”) and it lands in the team channel like the digest does, judgment included.

Tip: Keep the human in the loop where it counts: the briefing recommends, you dial. And keep the agent honest by keeping the prompt honest — the “say so when data is thin” line prevents a quiet Tuesday from being dressed up as momentum.

Where to go from here

The briefing sits on top of everything this series built.

Ready to see who reads?