How an Ad Agency Account Manager Cut Copywriting and Reporting Time in Half with Claude Code
Ad agency account managers: delegate copy drafts and monthly reports to Claude Code, keep humans on the final call. Prompts plus a script.
This is from back when I was helping run paid media at an ad agency.
I had eight clients on my plate. At the start of every month, all eight monthly reports came due at once. Explain why CTR dropped, propose next month’s moves, and on top of that pump out ten fresh banner copy ideas per account. Call it two hours per client, and eight clients is sixteen hours. I was doing all of it by hand, staring at numbers and squeezing words out of my head.
One month, running on no sleep, I shipped a report where I had copy-pasted last month’s numbers without noticing. A client caught it in their standing review meeting: “Wait, isn’t this the same chart as last month?” The blood drained out of my face. My copy ideas were tapped out too, and I was recycling the same “Limited time!” and “Best deal!” lines month after month.
The problem wasn’t ability. It was how my time was allocated. Mindless work like transcribing numbers and banging out a rough first copy draft ate my hours, leaving zero room for the part that actually mattered: “OK, so what do we do next month?” Once I built Claude Code into my workflow, that changed in a big way. Today I’ll lay out exactly how to split the work, written for the realities of an ad agency desk.
Key takeaways
- An ad agency account manager’s energy drains into two places: first-draft copy and the boilerplate parts of monthly reports. Hand those to AI and spend the freed-up time on strategy calls.
- I’ve included three copy-paste prompt templates: copy ideation, report drafting, and pre-launch checks.
- If you don’t draw a clear line between “what AI writes” and “what a human always decides,” you’ll get burned by regulatory violations or fabricated numbers. There’s a delegation table below.
- There’s a runnable check script that turns CSV numbers into a Markdown report skeleton. Copy, paste, run.
- I’ve also written the minimum operating rules for keeping personal data and clients’ private numbers out of the model.
Where ad agency account managers actually burn their time
First, let me be specific about who this is for. This article assumes you run performance ads (search, display, social) for multiple clients at an agency. You handle five to ten accounts solo, across Google, Microsoft, Meta, and lately TikTok too.
A typical month roughly flows like this:
- Start of month: export last month’s numbers from each platform’s dashboard and build the monthly report
- Mid-month: adjust bids and creative based on the report’s recommendations, draft copy for new banners and text ads
- Ongoing: respond to client pings like “Can we run this angle?” and “I need five ideas for next week’s sale”
- End of month: calculate the projected landing point and propose next month’s budget split
Of all this, the part that deserves your brain is “how do I read these numbers and what do I actually do about them.” But what actually devours time is everything upstream of that:
- Reshaping each platform’s differently formatted CSV into the same table
- Writing the plain-language facts, like “CTR improved from 0.8% to 1.1%”
- The rough copy draft (you rewrite almost all of it anyway, but getting that first idea out from zero is brutal)
This “no thinking required, yet time consuming” layer is what wears account managers down. That layer is exactly what you delegate to Claude Code.
Use case 1: Mass-produce copy first drafts, let humans pick the angle
Copy is heaviest when you write it from zero. So I let AI handle “give me ten first-draft ideas” and I move to selecting which direction to attack.
The prompt below is a template that produces ideas while respecting each platform’s character limits. Keep client names and products as placeholders and swap them in later.
You are a copywriter at an ad agency. Produce 10 search-ad headline ideas under the conditions below.
# Product
A moisturizing cream for women in their 40s. Target audience: people worried about fine lines from dry skin.
# Constraints
- Each headline must be 30 characters or fewer
- Avoid claims that need substantiation, like "No.1", "guaranteed", "always"
- Ban medical or regulatory claims that assert an effect (e.g., "removes wrinkles")
- Split the 10 ideas into 3 types: pain-point, benefit, and scarcity
# Output format
Type | Headline idea | Character count
The key is writing the constraints in detail. When you spell out “don’t touch regulated claims” and “count the characters and output them in a table,” you cut down on downstream edits. Of ten ideas, only two or three are usable, but compared to grinding them out from scratch, it’s a different world.
You can reuse this across clients and products by swapping only the conditions. Pinning your go-to angle types into the prompt (pain-point, benefit, scarcity, social proof, seasonal) also reduces lopsided output.
Use case 2: Draft the boilerplate parts of the monthly report
For a monthly report, 80% of the structure is the same every month. Summary, results by platform, month-over-month, next month’s recommendations. Writing this by hand every time was a waste.
I hand over the numbers as CSV and let AI write only the “statement of facts.” I overwrite the interpretation and recommendations myself. The prompt looks like this:
You are a paid-media analyst. Using the attached CSV (monthly results by platform), produce a draft monthly report.
# Rules
- Use only the numbers in the CSV. Do not write any number that is not in the CSV based on a guess.
- For "month-over-month," compute it from the CSV's previous-month and current-month columns, and add the calculation basis in parentheses.
- One line per platform for what went well and what went poorly.
- "Next month's recommendations": up to 3. Treat them as tentative and append "(needs operator confirmation)" at the end of each.
# Output structure
## This month's summary
## Results by platform (table)
## Month-over-month topics
## Next month's recommendations (needs confirmation)
The line “do not write any number that is not in the CSV” does the heavy lifting. Without it, the AI invents plausible-looking numbers. It’s the mirror image of my own screwup at the start, where I reused last month’s numbers; this time it’s the AI filling in fictional ones. So you force it to show its basis.
Making it append “(needs operator confirmation)” to the recommendations is deliberate too. The AI’s recommendations are only a starting point, and the final call belongs to a human. Making that line visible right in the report keeps everyone honest.
Use case 3: Hand the pre-launch self-check to a machine
The last-minute check before submitting ads always leaks when you do it by eye. Over the character limit, a forgotten URL tracking parameter, a regulated claim. Turn this into a checklist and run it through AI.
| Check item | What to verify | Who makes the final call |
|---|---|---|
| Character count | Within each platform’s limit | AI detects, human confirms |
| Banned phrasing | Words needing substantiation like “guaranteed”, “No.1” | AI detects, human decides |
| Ad regulations | Asserting an effect, misleading superiority claims | AI first-pass, human final call |
| Destination link | Is the URL and its parameters correct | Human always confirms |
| Number consistency | Report numbers match the dashboard | Human always confirms |
Paste this checklist straight into a prompt and ask, “Inspect the following ad copy against each item, and flag anything that trips a check with the reason.” AI is good at catching things you missed. But for high-stakes items like advertising regulations and destination links, you use the AI’s flags as a reference while a human makes the final call. You never fully hand those off.
What to delegate to AI vs decide yourself
Let me make the line crisp. When this is fuzzy, convenience comes at the cost of accidents.
| Stage | Delegate to AI | Human always decides |
|---|---|---|
| Copywriting | First-draft ideas, character-count tuning, rewording | Which angle to attack with, fit with brand world |
| Reporting | Stating facts, month-over-month math, structure draft | Interpreting numbers, next month’s moves, budget split |
| Pre-launch check | First-pass detection of length and banned words | Final regulatory call, destination link |
| Client comms | Drafting reply text | Final wording for promises, quotes, apologies |
I split by the weight of the decision. Redo-able work goes to AI; decisions that carry responsibility stay with a human. Advertising ties directly to regulation (consumer protection, claims rules), so always keep a stage where a named human who is on the hook does the check.
A check script that turns numbers into a report skeleton
I said “hand over the CSV and prompt it,” but reshaping per-platform CSVs by hand is also a chore. As a minimum preprocessing step, here’s a small script that reads a CSV and converts it into a Markdown table with month-over-month deltas. It runs on Node.js alone. The idea is to lock down the foundation of the numbers by machine before handing it to the AI.
import { readFileSync } from "node:fs";
// Usage: node report.mjs data.csv
// Expected CSV columns: media,impressions,clicks,cost,prev_cost
const file = process.argv[2] || "data.csv";
const rows = readFileSync(file, "utf8")
.trim()
.split("\n")
.slice(1) // drop the header row
.map((line) => line.split(","));
function ctr(clicks, imp) {
if (Number(imp) === 0) return "0.00";
return ((Number(clicks) / Number(imp)) * 100).toFixed(2);
}
function diff(now, prev) {
const n = Number(now);
const p = Number(prev);
if (p === 0) return "—";
const rate = (((n - p) / p) * 100).toFixed(1);
return (rate >= 0 ? "+" : "") + rate + "%";
}
console.log("| Platform | Impressions | Clicks | CTR | Cost | MoM (Cost) |");
console.log("| --- | --- | --- | --- | --- | --- |");
for (const [media, imp, clicks, cost, prevCost] of rows) {
console.log(
`| ${media} | ${imp} | ${clicks} | ${ctr(clicks, imp)}% | $${cost} | ${diff(cost, prevCost)} |`
);
}
Running it is just this:
node report.mjs data.csv
What comes out is a Markdown table with CTR and month-over-month already computed per platform. Paste that straight into the Use case 2 prompt, and the AI can focus on “writing prose” instead of “math.” Math goes to the machine, interpretation to the human, prose to the AI. Splitting the roles lets each one handle only what it’s good at.
Change the CSV column names to match your own platforms. Meta gives you “reach,” TikTok adds its own metrics, but you can adapt by just adding small functions like ctr or diff.
What changed before and after adopting this
Let me put numbers on it. These are rough figures from the range of work I was actually doing by hand.
- One monthly report per client: ~2 hours → ~45 minutes. AI handles stating facts and the table; I focus on interpretation and recommendations.
- Ten first-draft copy ideas: ~40 minutes → ~10 minutes. Ideation to the AI, selection and polish to me.
- Across eight clients, reporting alone saves around 10 hours a month.
A rough ROI estimate: if you peg an account manager’s hourly rate at $30, ten hours a month is $300 of labor. With eight clients, that’s time you can redirect into the quality of your recommendations or into new business. Claude Code’s API and usage costs paid for themselves several times over against that labor savings. Of course, you spend time tuning prompts up front, so the payoff really shows up in month two or three.
And it wasn’t just time. Getting back “room to think” raised the quality of the recommendations I brought to monthly review meetings. The “same chart as last month” kind of accident from the opening disappeared once I started running a machine check in between.
Security and personal-data cautions
An ad agency handles clients’ revenue, private conversion counts, and sometimes customer lists. How you hand that to AI needs careful decisions.
- Hand over client real names and private numbers as placeholders wherever possible. Abstract the product to something like “a moisturizing cream for women in their 40s,” and replace the company name with “Client A.”
- Never paste customer personal data (email, phone, address) into a prompt. You don’t need personal data to write copy or reports.
- Confirm your contract doesn’t restrict use of external AI. Some clients prohibit sending data outside. Check the NDA and terms of service in advance.
- Always have a human review the output before it ships. Don’t submit AI output as-is. This is less about security and more an iron rule for preventing accidents.
As an internal rule, building a one-page list of “info you may give AI” and “info you may not” erases drift between team members. The way to write these rules into Claude Code’s project settings is collected in CLAUDE.md best practices. If your team uses this, read it first and you’ll have fewer accidents.
If you’ve never touched Claude Code at all, set up your environment first with the Claude Code getting started guide and then come back, so you can try the prompts above right away. Non-technical account managers in particular should skim Claude Code for non-engineers before diving in.
FAQ
Q. Can I use AI-written copy as-is? A. It’s fine as a first draft, but don’t submit it as-is. Especially in industries that touch advertising regulations (cosmetics, supplements, healthcare), a human final check is mandatory. AI is good at first-pass detection of banned phrasing, but it can’t carry responsibility for the final call.
Q. If I report a wrong number, whose responsibility is it? A. Even if you had AI compute the numbers, responsibility lies with the person who submitted them. That’s why this article locks the math into a machine (the script) and constrains the AI with “don’t write any number not in the CSV.” Reconcile report numbers against the dashboard before sending.
Q. I’m bad at writing prompts. What’s the first step? A. I’d recommend starting with the report draft in Use case 2. The structure is the same every month, so the payoff is easy to feel. For how to assemble prompts themselves, see advanced prompt engineering with concrete examples.
Q. Should I tell clients I’m using AI? A. It depends on the contract, but I don’t think you need to hide it. A setup of “AI drafts, a human makes the final call” is actually easy to explain as quality control. Just get explicit agreement on handling private data in advance.
Q. Is it cost-effective even for a small agency? A. The smaller you are, running multiple clients solo, the more the payoff. With fewer hands, every bit of cut routine work turns directly into capacity. Even with a few clients a month, just the report and copy first drafts free up several hours. For more ways to compound those savings, see Claude Code productivity tips.
What I confirmed when I actually tried this
To write this article, I made dummy CSVs for eight fictional clients from my own site operations and ran the script and prompts above end to end.
For report.mjs, my only worry was whether a platform with zero impressions would trigger a divide-by-zero. The guard in the ctr function returned “0.00” and the table held together. Month-over-month also returned ”—” for a new platform with no prior-month data, exactly as intended.
For the report prompt, when I first tried it without the line “don’t write any number not in the CSV,” the AI happily invented “conversion rate is trending up,” a metric that wasn’t in the CSV. Adding that one line stopped it cold, and it wrote only from the CSV columns. For the copy prompt, I confirmed that having it output character counts in a table cut down on miscounts. Against a 30-character spec, the occasional 31-character idea still slips in, but since the count is visible in the table, a human can reject it instantly.
The bottom line: what I felt most wasn’t the time savings, it was getting back “room to think.” Let go of the routine work, and you can put your head into the part that matters: “what do we do next month?” That, I was reminded, is where the value of agency work lives. If you want to build this into your team’s workflow, training and consulting can design the rollout with you from the first step. If you’d rather try it solo first, start with the learning materials and free PDF.
Official character limits and banned phrasing per platform can change, so ultimately confirm against primary sources like Google Ads’ official policies.
Free PDF: Claude Code Cheatsheet
Enter your email and download the one-page Claude Code cheatsheet for commands, review habits, and safe workflows.
We handle your data with care and never send spam.
Level up your Claude Code workflow
Start with the free PDF, use Gumroad guides when you need repeatable workflows, and book consultation when rollout or revenue paths need human judgment.
About the Author
Masa
Engineer focused on practical Claude Code workflows. Runs claudecode-lab.com, a 10-language technical media site.
Related Posts
The Agency Permission Checklist Before Claude Code Edits a Client Site
A client-work permission checklist for safe AI-assisted edits on landing pages and websites.
Turn SaaS Support Bug Reports Into Repro Steps With Claude Code
A support-team workflow for converting vague tickets into safe, reproducible bug reports.
Turn Stale Obsidian Notes Into a Claude Code Brief in 10 Minutes
Obsidian notes that turn to mush when pasted? Sort them into facts, decisions, and unknowns so Claude Code can act on them right away.
Related Products
Claude Code Quick Reference Cheatsheet
A free one-page reference for daily Claude Code work.
Keep the essential commands, file-reference patterns, CLAUDE.md reminders, prompting habits, review cues, and debugging workflow notes next to your editor.
50 Battle-Tested Claude Code Prompt Templates
Copy, paste, ship. 50 production-ready prompts.
Use proven prompts for code review, refactoring, testing, documentation, debugging, architecture, and incident response.