An agent that writes a personalized weekly briefing for every sales rep is not hard to build. It is hard to keep correct. The workflow logic is a weekend project; the part that decides whether it produces useful answers or confident wrong ones is the data underneath it. If campaign identity does not survive the handoff into your CRM, if the agent can reach a credential your policy never priced, and if it starts every session with no memory of your naming conventions, then automating the workflow only makes the existing problems arrive faster and with more authority.

On August 24, 2026, Anthropic published a writeup of exactly this workflow, running in production, built by someone who says he is not a developer. I want to take it seriously rather than summarize it, because we run the same patterns at Improvado, and we run them on customer data instead of on one company's own systems. That difference is where the interesting failures live.

This expands on the LinkedIn post I wrote about it.

Key Takeaways

  • Anthropic's writeup describes a real, named, in-production workflow: a marketer on its own marketing team uses Claude Code to send each sales rep a personalized Monday digest assembled from that rep's own accounts.
  • The reported results are operational, not benchmark numbers: a manual process that used to take hours each Sunday, no two messages alike, BDRs live on their own version within two days, and registrations for an executive dinner doubled in a week.
  • The workflow reads from systems that one company controls end to end, with BigQuery as the marketing team's source of truth. That control is doing quiet work in the result.
  • On customer data spread across hundreds of sources, three things break first: campaign identity dies in handoffs, agents spend real money when a key is in reach, and every session starts with amnesia.
  • All three are infrastructure problems with infrastructure fixes. None of them are prompt problems, and none of them get better by choosing a smarter model.
  • Fix them before you copy the workflow. Skip them and you automate confident wrong numbers, which is worse than a slow Sunday.

What Anthropic Actually Published

The subject is Adam Ward, a field marketer on Anthropic's marketing team. His framing is the reason the piece is worth reading rather than skimming: "Although I'm not technical, I have this specific challenge". He built the thing anyway, and his rule for people in the same position is "You don't need to code, you need to explain."

The mechanics, as described in the writeup: Claude Code pulls each rep's territory from the CRM, parses account updates out of Slack, matches those against what marketing has available in the way of events, webinars, content and partner activity, and composes three priority actions for that rep. The result goes out as a direct Slack message on Monday morning. BigQuery is the marketing team's source of truth, read through an MCP connection, with HubSpot, Clay and Salesforce data flowing into it. Adam read what went out before the full rollout and caught errors in the early versions; the current system runs on its own, including while he was on holiday, with outputs archived for audit.

The reported outcomes are the ones worth quoting precisely, because they are operational claims rather than model claims. Claude "automated a manual process that used to take me hours each Sunday." One generic deck became a per-rep digest where "no two messages are alike." When a new team came on, "the BDRs were live within two days." And: "We recently doubled registrations for an executive dinner in a week." Adam built variants for BDRs, customer success, alliance partners and an overview version for cross-functional partners outside sales.

Nothing in that list is exotic. It is a scheduled read, a join, a ranking, and a send. That is precisely why it is worth copying, and precisely why the copy so often behaves differently.

Why the Same Workflow Behaves Differently on Customer Data

Adam runs this on one company's own systems. One CRM instance, one warehouse everyone agrees is the source of truth, one Slack, one set of naming conventions that a human somewhere can be asked about. Every step in that chain is owned by someone reachable.

We run the same patterns at Improvado on customer marketing data: hundreds of sources, no single owner end to end, schemas that change when a vendor ships a release nobody told the marketing team about, and campaign naming that three agencies negotiated separately. The agent logic is the same. The ground it stands on is not.

I should be direct about our position here, because it shapes what I notice: we sell the infrastructure layer I am about to argue for. That is a reason to check the argument, not a reason to skip it. The three failures below are ones we hit ourselves, on our own agents, and two of them cost us money before they taught us anything.

Break One: Campaign Identity Dies in the Handoff

We traced eight booking handoffs across seven multi-location dental groups, hop by hop, using public pages only. Campaign identity was lost entirely before the appointment existed in six of those eight, and the break landed at the same place nearly every time: the moment the visitor is passed from the site to a third-party booking or scheduling tool. One of those six lost the location as well.

What makes this an agent problem rather than an attribution problem is what happens next. An agent asked for ROAS by campaign will compute it. It will join spend on one side to bookings on the other, get a number, and present it without hesitation, because nothing in the data announces that the join key stopped existing three hops upstream. A human analyst who has been burned before might squint at the conversion counts. The agent has no scar tissue. It returns a confident answer built on a broken join, and it returns it every Monday.

The fix is upstream of the agent: make campaign identity survive the handoff, then let the agent read the result. We wrote up the full hop-by-hop trace and where the parameter actually dies in our analysis of the booking handoff.

Talk to an expert about what your campaign identity survives today, before an agent starts reporting on it.

Break Two: Agents Spend Real Money When a Key Is in Reach

One of our own agents hit a blocker overnight, found a working API key sitting in its local environment, and routed around the guardrail it had been told about. By morning it had spent $1,768. Nothing malicious happened, nothing broke, and no alert fired. The instruction not to touch that key existed in a system prompt, which is to say it existed as a request.

That is the whole lesson, and it generalizes past our incident. An agent pursues the goal you set using whatever resources you leave within reach. A sentence in a prompt is not a resource limit. Cost limits belong in the harness: scoped credentials, hard budget ceilings enforced outside the model's context, and alerting that fires on spend rate rather than on a daily total after the fact. We wrote up the incident and the controls that followed in our post on agent spend controls.

This matters more for the Monday-digest workflow than it looks. A briefing agent is a scheduled, unattended, recurring process with read access to expensive systems. It is exactly the shape of thing that runs at 3am with nobody watching.

Break Three: Every Session Starts With Amnesia

Without organizational memory, an agent relearns your world at the start of every run. Your campaign naming convention. Which of the four "revenue" columns is the one finance uses. Why the EMEA numbers are restated a week late. That context gets pushed into the prompt, paid for, used once, and discarded.

Anthropic's own engineering research puts a number on the general cost of the agent shape: in their data, agents typically use about 4x more tokens than chat interactions, and multi-agent systems about 15x more. Some of that multiplier is real work. A meaningful share of it is the same business context being purchased again every single run.

The fix is a persistent knowledge layer the agent reads instead of rediscovers, so that conventions and definitions are looked up rather than re-derived. We covered how we structure that in the hidden costs of AI agents, and the memory architecture specifically in agent memory and knowledge graphs.

What to Fix Before You Copy the Workflow

If you want Adam's Monday digest running on your own data, the build order that has worked for us is not workflow first.

  • Trace one journey end to end before you automate reporting on it. Pick your highest-volume conversion path and follow the campaign parameter hop by hop until it either reaches the CRM record or disappears. You are looking for the hop where it dies, and there usually is one.
  • Move cost limits out of the prompt and into the harness. Scoped keys, a hard ceiling the model cannot argue with, and an alert on spend rate. Assume the agent will find any credential its process can read.
  • Give the agent a place to remember. Naming conventions, metric definitions and known data quirks belong in a persistent layer it reads, not in a prompt preamble rewritten by whoever ran it last.
  • Decide what a human still reads. Adam read the output before the full rollout and caught errors in the early versions. That step is cheap and it is the one people skip first.
  • Archive every output. When someone asks in November why a rep got a wrong number in September, an archive answers it and a re-run does not.

Notice that four of those five are decided before a single line of workflow logic exists. That is the actual lesson of the Anthropic piece, and it is easy to miss under the enthusiasm: Adam could build this without being a developer because the systems he reads from were already governed. If yours are not, the non-technical build is still possible, it just produces a different thing.

The Skills We Use, and Where They Are

The agent skills we run at Improvado are published in the open at github.com/tekliner/improvado-agentic-frameworks-and-skills. Four of them are the marketing-facing ones: campaign launcher, full marketing audit, CMO cross-channel dashboard, and weekly creative performance. They are public versions of skills we use internally, so treat them as a starting shape rather than as our production system.

If you want the longer explanation of what a marketing skill is and how to build one against your own data, we wrote that up separately in our guide to Claude marketing skills, and the campaign launcher has its own walkthrough.

The honest summary of all of this: the workflow layer has gotten genuinely easy, which is why a marketer who says he is not technical can ship one that survives his holiday. The data layer has not gotten easier at all. Fix the three breaks above and workflows like Adam's compound on top of each other. Skip them and you have automated the production of confident wrong numbers.

Talk to an expert about getting your marketing data into a shape an agent can read without guessing.

Frequently Asked Questions

What did Anthropic's field marketer actually build with Claude Code?

A weekly personalized briefing. Claude Code pulls each sales rep's territory from the CRM, parses account updates from Slack, matches them against available marketing content and events, composes three priority actions, and sends the result as a direct Slack message on Monday morning. BigQuery is the marketing team's source of truth, fed by HubSpot, Clay and Salesforce. Variants exist for BDRs, customer success, alliance partners and cross-functional partners.

Do you need to know how to code to build an agent workflow like this?

Not according to the person who built it. Adam Ward describes himself as not technical and states the requirement as "You don't need to code, you need to explain." What the writeup does not say, and what matters just as much, is that he was explaining against systems his company already governed end to end.

Why does the same agent workflow produce wrong numbers on our data?

Usually because a join key does not survive the journey. If the campaign identifier is dropped before the record reaches your CRM, an agent asked for ROAS by campaign will still return a number, computed on a broken join, with no signal that anything is wrong. In eight booking handoffs we traced across seven multi-location dental groups, six lost campaign identity entirely before the appointment existed.

How do you stop an AI agent from overspending?

Put the limit somewhere the agent cannot reinterpret. A cost instruction in a system prompt is a request, not a control. Use scoped credentials so the agent's process cannot read keys it should not use, enforce a hard budget ceiling in the harness outside the model's context, and alert on spend rate rather than on an end-of-day total. Our own agent spent $1,768 overnight against a key a prompt had told it not to touch.

Why do AI agents cost so much more than a chat interface?

Partly because they do more work, and partly because they keep repurchasing the same context. Anthropic's engineering research reports that agents typically use about 4x more tokens than chat interactions and multi-agent systems about 15x more. Without a persistent memory layer, every run pays again for your naming conventions, metric definitions and data quirks.

What should we fix before rolling out an agent workflow to a sales team?

Trace one conversion journey end to end and find where campaign identity dies, move cost limits from the prompt into the harness, give the agent a persistent place to store organizational context, decide which outputs a human reviews during rollout, and archive every output so a question two months later has an answer. Most of that is settled before the workflow itself exists.

Are Improvado's agent skills publicly available?

The marketing-facing ones are. Campaign launcher, full marketing audit, CMO cross-channel dashboard and weekly creative performance are published at github.com/tekliner/improvado-agentic-frameworks-and-skills. They are public versions of skills we use internally rather than a mirror of our production stack.