X-GenAI

$ npm start▋

Reporting that flags the problem before the client asks

“We did it by hand, carefully, again” doesn't build a client relationship. “You got a heads-up on the CPA spike before you even asked” does. Working demo, real pipeline, output below copied verbatim from an actual run.

The problem this automates

Every agency account manager loses a chunk of every Friday to the same task: pull last week's numbers from three ad platforms, figure out what actually changed, write it up so a client with zero patience for jargon understands it in 30 seconds, and hope nothing got missed before Monday's call. Do this across a dozen accounts and reporting quietly becomes a part-time job that produces no billable value, it's the thing clients expect, not the thing they're paying extra for.

How it works

One pipeline, per client, on a schedule.

01

Load the week's raw metrics

Per channel (spend, impressions, clicks, conversions, or organic sessions and keyword rank for SEO), alongside the previous week's.

02

Compute every derived number deterministically

CTR, cost-per-conversion, week-over-week deltas. This never touches an LLM; it's plain arithmetic, auditable and exactly reproducible.

03

Flag wins and concerns against fixed thresholds

e.g. cost-per-conversion up 20%+, conversions down 15%+, organic traffic down 10%+. The "eval gate": a flat list of verified facts, each with the real numbers attached.

04

Ask Claude to write the executive summary, and only the summary

Restricted to the facts step 3 already established, so the model narrates verified numbers, never invents a percentage that sounds plausible.

05

Render one report per client, plus one internal digest

The digest is the thing an account manager actually wants before a Monday standup: which accounts need a heads-up before the client sees their own report.

A real run: 3 client accounts

“Formwork Digital” and its three clients are fictional, invented for this demo, same disclosure the rest of this site uses for illustrative work. Both blocks below are copied verbatim from a committed sample run.

# Agency account-health digest

3 client accounts · week of 2026-09-07

| Client              | Status     | Top flag |
|----------------------|------------|----------|
| Marlowe & Finch Law | 🔴 At risk | Conversions dropped -35.3% week-over-week (34 → 22), spend held roughly flat (€2,200 → €2,400). |
| Kettlebright        | 🟢 On track | Conversions grew +27.3% week-over-week (165 → 210). |
| Ridgeline           | 🔴 At risk | Conversions dropped -46.2% week-over-week (26 → 14), spend held roughly flat (€3,900 → €4,100). |

One client's actual report:

# Weekly performance report: Marlowe & Finch Law
Week of 2026-09-07 · Status: 🔴 At risk

## Executive summary
This week's clear win: average tracked keyword rank improved from 9.6
to 8.2. The thing worth your attention: conversions dropped -35.3%
week-over-week (34 → 22), spend held roughly flat (€2,200 → €2,400).
We're digging into why before next week's report and will bring a
recommendation, not just the number.

## Flagged this week
⚠️ Conversions dropped -35.3% week-over-week (34 → 22).
⚠️ Cost per conversion rose +68.6% (€65 → €109).
✅ Average tracked keyword rank improved from 9.6 to 8.2.

This one doesn't carry an adversarial test suite the way the enquiry-to-CRM build does, it's a working example, not a hardened one yet. The source lives in X-GenAI's working repo, which also holds unreleased pricing and outreach material, so it isn't public. Happy to walk through the actual code on a call.

Adapting this for a real agency

In a real engagement, the metrics step pulls from each platform's reporting API (Google Ads, Meta, LinkedIn, GA4/Search Console) instead of a fixture, the report goes to your preferred surface (email, a shared page, a PDF export), and the flag thresholds get tuned per account rather than using one illustrative default set. The pipeline shape doesn't change, that's the point of building it this way.

Losing your Fridays to client reports?

15 minutes, no pitch deck. Bring your actual reporting workflow.