Case Study
AI Reporting Agents | Claude & Anthropic API | Slack Analytics
A fitness brand with more than 150,000 users had the usual reporting problem. The dashboards existed, and nobody read them. What the team actually wanted was somebody to look at the numbers each morning and say what changed and what to do about it.
I built two reporting agents on the Anthropic API with Claude. One reads sales calls, the other reads ad performance. Both post into Slack, where the team already is.
How it works
Python does the math, Claude does the reading
The split is deliberate. Every headline number is computed in Python first, deterministically. Spend, installs, cost per install, trials, cost per trial. The model never gets to invent a figure, because by the time it sees the data the figures are already fixed.
Claude then reads the full dataset and writes the analysis around those numbers: which creatives are carrying the budget, which one is self-optimizing downward, which new one is worth watching.
Keeping it cheap and consistent
Structured outputs keep the report format stable, so the Monday post looks like the Friday post and people can skim it. Prompt caching keeps the per-report token cost flat, even though each run sends a large dataset.
An LLM-as-judge check runs before anything posts to Slack. If a report does not pass, it does not go out. That was the difference between a demo and something a team is willing to read every morning.
What comes out the other end
The sales-call agent reads 54 transcripts and turns them into 83 patterns, each one carrying a direct quote from the call it came from. So when it claims something about why deals stall, you can go read the sentence that made it say so.
The ad agent posts a daily performance summary with flags on it: budget concentrated on an underperforming creative, or a new one showing strong early hooks. Internal tools, built with Claude Code, following the delegate, review, approve pattern.
More screenshots