Build
01concept system

Reporting Engine

Autonomous social reporting agent

Manual reporting day → ~25 minutes.

An agent designed to pull every social source, reconcile native vs scraped numbers, score the narrative against a brand-voice gate, and ship a finished report to Sheets, Docs and Slack — unattended.

~25 min
target run time, unattended
every stat
re-derived at the QA gate
1 run
designed for all accounts at once
Concept system — the architecture is real and considered; a live deployment isn't built yet. Shown to demonstrate how I'd execute it.
— the old way

Reporting used to eat a full day per client: exporting Sprout, cross-checking native dashboards, hand-building decks, second-guessing every stat. The work was high-effort, low-altitude, and easy to get subtly wrong.

— the workflow
01Pull
Composio · Sprout · IG Graph · Meta Ads
02Reconcile
normalisation layer
03Analyse
stats engine
04QA gate
eval rubric · self-critique
05Compose
Claude · 4-question framework
06Ship
Sheets · Docs · Slack
— the system, running

Instagram reporting agent — live pull, anomaly flags, and the QA gate that has to pass before anything ships.

IG Reporting Agentrunning
Reach
1.24M+42%
Engagement
6.8%+1.3pt
Followers
+3,410+18%
Saves
9,902−4%
agent activityunattended run
00:00Pulled 7-day window — Sprout + IG Graph (4 accounts)
00:03Reconciled 1,204 rows · native-beats-scrape applied
00:07Flagged 3 outlier posts (>3σ above baseline)
00:11QA gate — re-derived 48 stats from source
00:14Brand-voice rubric: narrative scored 9.2 / 10
00:18Composed report · 4-question framework
QA gate
9.2/ 10PASS
stat accuracy100%
brand voice92%
hook strength88%
ship to
Data sheet · written Report doc · published Slack summary · posted
top posts · flagged
Reel — “the system underneath”
212K reach9.4% ER
Carousel — KPI teardown
188K reach8.1% ER
Reel — founder POV cut
164K reach7.7% ER
— stage by stage
01Pull

Pull every source

Agent pulls 7/30/90-day windows from Sprout and the Instagram Graph API in parallel, plus paid spend from Meta. One run, every account.

Composio · Sprout · IG Graph · Meta Ads
02Reconcile

Native beats scrape

Dedupes overlapping metrics and applies the native-beats-scrape rule — when a third-party number disagrees with the platform's own, the native figure wins. No double-counting.

normalisation layer
03Analyse

Pace-weighted KPIs + anomalies

Computes week-over-week deltas, pace-weighted KPI progress against goal, and flags statistical outliers (a post 3σ above its baseline gets surfaced, not buried).

stats engine
04QA gate

The eval gate — the moat

Every stat is re-derived from source and every line of written narrative is scored against the brand-voice + stat-accuracy rubric. Below threshold, it does not ship — it loops back. This gate is the whole product.

eval rubric · self-critique
05Compose

Write the report

Generates the narrative using the 4-question report framework, builds the data tables, and drafts the Slack-ready summary — in the client's voice, not a template's.

Claude · 4-question framework
06Ship

Sheet → Doc → Slack

Writes the data sheet, publishes the formatted doc, and posts the summary to the client channel. The operator reviews a finished artifact instead of building one.

Sheets · Docs · Slack
— the system underneath

Anyone can wire an API to an LLM and generate a report. The defensible part is the eval gate: a scored rubric that re-checks every number and every sentence before it ships, so the output is trustworthy enough to send to a client unattended. The reclaimed hours don't disappear — they get redirected up an altitude, to the strategy the report is supposed to inform.

— stack
Composiotool/router into Sprout, IG, Slack
Claudenarrative + self-critique eval
Sprout + IG Graphorganic source of truth
Sheets / Docs / Slackdelivery surface
agenteval/QAComposioreporting