- Brief in Sheets
- ChatGPT writes 20
- Claude scores rules
Generate and test 20 ad variants from one brief
Turn one campaign brief into 20 Meta and Google ad variants, score each against your brand rules and limits, and queue the best for approval.
Every Monday, get a Slack summary of spend, CPA and ROAS by campaign, with week-over-week changes and anomalies flagged before standup.
Monday mornings go to pulling ad exports, pasting them into the reporting sheet and writing the same "spend up, CPA flat" note for the team. The number that matters, like a campaign whose CPA doubled on Thursday, gets lost in a table nobody reads closely. By the time someone spots it, a week of budget has gone to the wrong place.
Create a Raw tab where weekly exports from both platforms land with identical columns: week_start, platform, campaign, spend, impressions, clicks, conversions, revenue. Add a Targets tab with target CPA and target ROAS per campaign.
In n8n, add a Schedule Trigger for Mondays at 07:00 and two Google Sheets "Get Row(s)" nodes for the Raw and Targets tabs. Filter Raw to the last two complete weeks.
Use a Code node to sum by campaign and compute CPA (spend / conversions), ROAS (revenue / spend) and the week-over-week change for each. Claude then only explains numbers and never has to calculate them.
In the same Code node, flag any campaign where CPA rose more than 30%, ROAS fell below target, spend moved more than 40% week over week, or conversions dropped to zero. Skip campaigns under $100 of weekly spend so small-budget noise does not crowd out real problems.
Pass the computed table and the flags as JSON to a Basic LLM Chain with an Anthropic Chat Model node and the report prompt below. Keep the output under 200 words so it reads in Slack without expanding.
Send the text to #paid-media with the Slack node, including a link to the sheet. Append each report and its flags to a Reports tab so you can see which campaigns get flagged week after week.
You write the Monday paid-media update for the {{company_name}} marketing team.
All numbers below are already calculated. Do not recalculate them or round them differently.
Totals this week vs last week: {{totals_json}}
By campaign: {{campaigns_json}}
Flags raised by our rules: {{flags_json}}
Write a Slack message under 200 words:
1. One line on total spend, conversions, blended CPA and ROAS, with the week-over-week change.
2. "Needs attention": each flagged campaign, what moved, and the most likely cause visible in the data (for example, spend up while conversions stayed flat).
3. "Working": the one or two campaigns beating target by the widest margin.
4. One suggested action for this week, tied to a specific campaign.
If there are no flags, say so plainly. No emoji.Turn one campaign brief into 20 Meta and Google ad variants, score each against your brand rules and limits, and queue the best for approval.
Score every demo request against your ICP, update HubSpot and ping the right rep in Slack within a minute of the form submit.
Every new Zendesk ticket gets a category, priority and sentiment tag plus a draft reply in an internal note before an agent opens it.