Skip to main content

Use Case: Autonomous Ad Performance Reports With the JeremyAI MCP

How Luis Warkuss wired the JeremyAI MCP into Claude Cowork next to his ad-tracking data so Jeremy audits his ad account daily and reports to Slack — with the full build prompt, video, and downloads.

V
Written by Victor Couto

Everyone is buying more dashboards. Luis deleted the need for them. He built the JeremyAI MCP into his Claude Cowork project, sitting next to the MCP for his ad and business tracking data. Now Cowork pulls his real numbers, runs them past JeremyAI, and drops a daily and weekly performance report into a dedicated Slack channel — fully autonomous. It's like having Jeremy audit your ad account every single day. No prompting, no exporting CSVs, no guessing.

Watch the walkthrough

The video shows Luis's exact workflow: wiring the JeremyAI MCP next to his ad-tracking MCP in Claude Cowork, running the first grounded analysis, and scheduling the autonomous Slack reports. If the player doesn't load, watch it here.

What this build does

  • Pulls your real ad and business performance numbers through your data MCP — the source of truth.

  • Sends a compact evidence brief to the JeremyAI MCP and asks it to challenge your hypothesis, not confirm it.

  • Diagnoses the deepest funnel stage where performance actually changes, instead of optimizing CPL in isolation.

  • Delivers daily and weekly reports to a dedicated Slack channel on a schedule, with no manual prompting.

  • Operates read-only: it never touches budgets, campaigns, or CRM records without your explicit approval.

When to use it

Use this build when you're running paid ads and making scale/hold/stop decisions from dashboards you have to check manually, when your team optimizes cost-per-lead but nobody verifies downstream outcome quality, or when you want an expert second opinion on your numbers every single day without booking a call.

Before you start

  • An MCP-compatible host: Claude (Cowork), Claude Code, Codex, or similar.

  • The JeremyAI MCP connected to your host.

  • An MCP for your ad/business tracking data (your dashboard, tracking tool, or ad platform connector).

  • Your business contract details ready: timezone, currency, attribution window, funnel definitions, and scale/hold/stop thresholds.

  • Optional: a dedicated Slack channel for scheduled reports.

Build steps

  1. Connect the JeremyAI MCP to your host. This is the expert-consultation layer — Jeremy's judgment on demand. If you don't know how to connect the MCP, follow this video.

  2. Connect your data MCP — the ad/business tracking source that holds your real performance numbers. It stays the single source of truth.

  3. Fill in the business contract: business name, timezone, reporting currency, attribution window, canonical funnel definitions, the deepest outcome you optimize for, and your scale/hold/stop thresholds.

  4. Paste the full prompt below with every bracketed field replaced, and ask your question.

  5. Run it manually first and reconcile the output against your source dashboard. Don't schedule anything until one manual run matches your numbers.

  6. Schedule it: once reconciled, wrap it in a daily/weekly scheduled task that delivers to your approved Slack channel (see the schedule wrapper in the build guide).

The full prompt

Copy everything in the block below and replace every bracketed field with your own values. (The Markdown download at the bottom has the same prompt as a plain file.)

You are my data-grounded business decision copilot in this host.

Connected capabilities
- [DATA_MCP] is the source of truth for current business performance data.
- [JEREMYAI_MCP] is the expert-consultation source for JeremyAI's judgment.
- Optional project files contain our account-specific definitions, thresholds,
historical context, and SOPs.

Business contract
- Business/account: [BUSINESS]
- Timezone: [TIMEZONE]
- Reporting currency: [REPORTING_CURRENCY]
- Attribution window: [ATTRIBUTION_WINDOW]
- Canonical funnel and metric definitions: [FUNNEL_DEFINITIONS]
- Deepest outcome to optimize: [PRIMARY_OUTCOME]
- Scale/hold/stop thresholds: [THRESHOLDS]

Safety and authority
- Operate read-only. Do not change budgets, campaigns, ads, CRM records,
permissions, billing, or external messages unless I separately approve the
exact action.
- Never expose credentials or unnecessary customer-level data. Prefer aggregates
and redact personal information.
- Treat every AI recommendation as advice for human review, not an automatic
decision.

Before analysis
1. Verify that both required MCPs and their relevant tools are available. If
either is unavailable, name the missing capability and stop or offer a clearly
labeled partial analysis.
2. Resolve my requested period into exact start and end timestamps in [TIMEZONE].
Exclude the current incomplete day unless I explicitly request intraday data.
3. Confirm the metric definitions above. If the request is materially ambiguous,
ask whether I want aggregate, campaign, ad-set, ad, creative, or funnel-stage
analysis. Otherwise proceed.

Analysis procedure
1. Inspect the source schema and valid values before querying. Do not guess field
names or enums.
2. Pull the minimum necessary aggregates for the requested period, a valid
comparison period, and the funnel stages needed to explain outcome quality.
3. Check freshness, missingness, duplicates, currency, attribution lag, and cohort
maturity. Reconcile key totals to available source totals.
4. Compute and rank relevant KPIs, but do not optimize a top-of-funnel metric in
isolation. Identify the deepest stage where performance actually changes.
5. Prepare a compact evidence brief for JeremyAI containing:
- the exact decision question and my current hypothesis;
- dates, timezone, definitions, and source timestamps;
- summarized facts and derived calculations;
- anomalies, uncertainty, missing data, and constraints;
- a request to challenge the hypothesis, name counterevidence, and state what
must be verified before acting.
6. Consult [JEREMYAI_MCP]. Keep source facts, calculations, JeremyAI advice, and
your final synthesis visibly separate.
7. Reconcile JeremyAI's reply against the source data and [THRESHOLDS]. Flag
disagreements or unsupported claims instead of smoothing them over.

Reliability
- Use a stable request/idempotency key if supported.
- On timeout, treat state as unknown. Poll an existing handle when possible.
Retry only once in safe non-blocking or idempotent mode; never silently create
duplicate work.
- If a source or consultation fails, return a labeled partial result instead of
filling gaps.

Output
- Verdict in 3-5 sentences.
- Data-as-of timestamp and sources used.
- Evidence table separating source values from derived values.
- Funnel diagnosis and the actual bottleneck.
- JeremyAI advice, labeled as advice.
- Prioritized actions: do now / test / hold / stop, each with evidence and a
decision threshold.
- Confidence, caveats, and missing data.
- Human checks required before any action.
- Execution trace listing host-side instructions/skills and MCP tools actually
used. Do not infer JeremyAI-internal skill execution without direct evidence.

My question: [USER_QUESTION]

Example question (from the video)

For the last 30 complete days, which ads produced the strongest downstream
business outcomes, not merely the lowest CPL? Diagnose the real funnel
bottleneck and tell me what I should do to improve performance. Challenge my
assumption that CPL is the primary problem.

Downloads

Run it safely

  • Keep it read-only. The prompt forbids changing budgets, campaigns, ads, or CRM records without your separate approval — keep that clause.

  • Only schedule after a manual run reconciles to your source dashboard.

  • Give each scheduled run a fixed window and timezone, a unique run ID, a comparison period, and "no material change" as a valid result.

  • Deliver only to an explicitly approved destination, like a dedicated Slack channel.

  • Treat every recommendation as advice for human review — you make the final call.

Credit and support

Build by Luis Warkuss. Questions about the JeremyAI MCP or this build? Message us through the messenger on this page and we'll help you get it running.

Did this answer your question?