Analyze LinkedIn Wasted Spend
User asks about wasted ad spend, unprofitable campaigns, where their LinkedIn budget is being wasted, or wants to identify underperformers.
Identifies LinkedIn campaigns and B2B segments wasting money:
Campaign Analysis:
- Campaigns losing money (ROAS
<1.0 = actual loss) - Campaigns underperforming (ROAS below target = opportunity cost)
- Severity classification (CRITICAL, HIGH, MEDIUM)
- Wasted spend calculation per campaign
B2B Demographic Waste:
- Seniority levels with poor ROAS
- Industries not converting
- Company sizes wasting budget
- Job functions underperforming
Creative Waste:
- Fatigued creatives (14-day threshold)
- Low engagement creatives
- High spend but low lead creatives
Returns:
- Total wasted spend and percentage
- Campaigns to pause/reduce
- Segments to exclude
- Quick actions with monthly savings estimates
Parameters:
- lookback_days: Number of days to analyze (7-120). Default: 30
- start_date: Optional start date (YYYY-MM-DD). Overrides lookback_days when used with end_date.
- end_date: Optional end date (YYYY-MM-DD). Overrides lookback_days when used with start_date. ⚠️ DATE CLARIFICATION: If the user’s date request is vague or ambiguous (e.g., “March to June” without a year, “last quarter”, “recently”, “a few months ago”), ask the user to specify exact dates before calling this tool. Do not assume or guess dates.
- target_roas: Override target ROAS threshold
- include_demographic_breakdown: Include B2B segment waste. Default: true
- include_creative_analysis: Include creative-level waste. Default: true
- ad_account_id: Required for multi-account users. Get from list_connected_accounts
Example Prompts:
- “Where am I wasting money on LinkedIn?”
- “Which LinkedIn campaigns are losing money?”
- “Show me LinkedIn wasted spend”
- “Which B2B segments should I stop targeting?”
- “How can I reduce LinkedIn ad waste?”
Execution time: 4-6 seconds
Quick Actions (IMPORTANT — read severity context first):
- ⏳ LEARNING campaigns → Do NOT pause. Monitor for 14+ days before judging.
- ❓ INSUFFICIENT_DATA campaigns → Need more spend before analysis is meaningful.
- 🚨 CRITICAL campaigns (established, 14+ days, ZERO conversions) → Consider pausing
- 🚨 CRITICAL campaigns (established, 14+ days, HAS conversions) → Review performance, verify revenue in ad platform before reducing budget
- 🔴 HIGH severity (established, 14+ days) → Consider reducing budget by 50-70%
- 🟡 MEDIUM → Optimize targeting, ad copy, landing pages
⚠️ NEVER say “pause” for a campaign that has conversions. Say “review” or “reduce budget” instead. ⚠️ NEVER recommend pausing a campaign in LEARNING phase. ⚠️ If ALL campaigns are LEARNING or INSUFFICIENT_DATA, tell the user their account is too new for waste analysis and recommend checking back in 2 weeks. ⚠️ Consider campaign objective: brand awareness campaigns will not have ROAS data. This is normal. ⚠️ When data confidence is MEDIUM or LOW, soften all recommendations and add verification prompts.
Authorizations
API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
Headers
Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000
Body
All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.
Input schema for analyzing LinkedIn wasted spend
Response
Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).
Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.

