Projects your ROAS for the next 30, 60, and 90 days based on current performance trends, seasonality patterns from your historical data, and planned budget or campaign changes. Gives you a range with confidence intervals, not a single number pretending to be precise. Platform: Google and Meta.
npx skills add https://github.com/irinabuht12-oss/marketing-skills --skill roas-forecasting
Projects your ROAS for the next 30, 60, and 90 days based on current performance trends, seasonality patterns from your historical data, and planned budget or campaign changes. Gives you a range with confidence intervals, not a single number pretending to be precise.
Claude takes your trailing performance data, identifies the trend line (improving, declining, or stable), overlays seasonal patterns from the same period in prior years if available, and factors in any known upcoming changes (budget shifts, new campaigns, creative launches). It produces a forecast range showing best case, expected case, and conservative case.
Your ecommerce account is averaging 4.2x ROAS in March. Claude's analysis shows ROAS typically dips 15-20% in April based on last year's data (post-spring-sale slowdown), your top creative set is showing early fatigue signals that will reduce efficiency by ~10% over the next 30 days, and you're planning a 20% budget increase which historically reduces marginal ROAS by 8-12%. 30-day forecast: 3.1x (conservative) to 3.6x (expected) to 4.0x (best case, if new creatives outperform).
This skill works best with live account data. Connect the free Ryze MCP once and Claude reads your Google Ads, Meta Ads, GA4 and Search Console directly:
https://connector.get-ryze.ai/mcpclaude mcp add ryze --transport http https://connector.get-ryze.ai/mcpSetup guide: https://www.get-ryze.ai/how-to-connect-claude-to-google-meta-ads-mcp
Take irinabuht12-oss/roas-forecasting from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.