Budget recommendation — AI suggestions

Last updated: May 19, 2026

Budget recommendation — AI suggestions

The Budget recommendation block in Cross-Channel mode suggests how to reallocate spend across platforms. Backed by getOptimalMixRecommendation() in apps/backend/src/services/cross-channel-analytics.service.ts. Returns MixRecommendation[]. RULE-BASED logic (not machine learning): shifts budget toward higher-ROAS platforms based on historical patterns. Use for weekly budget allocation; apply gradually (auction systems dislike abrupt changes).

Who is this for

Mediabuyers + admins making cross-platform budget allocation decisions. Especially valuable when running 3+ platforms simultaneously and rebalancing across weeks / months.

What the recommendation shows

For each selected platform:

Field

What

platform

Platform code (meta, google, tiktok, etc.)

spend

Current spend (period) in target_currency

roas

Current ROAS

current_budget_pct

Current share of cross-platform spend

recommended_budget_pct

Suggested share

recommendation_delta_pct

Difference (recommended − current)

multiplier

Suggested budget multiplier (e.g. 1.25 = +25%)

avgDailySpend

Current avg daily spend

UI typically renders as a table or stacked bar comparison (current vs recommended).

How it works (the rule)

The logic is rule-based, not AI / ML:

  1. For each platform: compute historical ROAS over the period

  2. Rank platforms by ROAS

  3. Compute optimal allocation that shifts budget toward higher-ROAS platforms

  4. Cap any single-platform shift (e.g. max ±30% per recommendation) to prevent disruptive reallocation

  5. Return current vs recommended split

No machine learning. No external data feeds. Pure historical performance.

This is deliberate:

  • Transparent + auditable (you can verify the math)

  • Predictable (same input → same output)

  • No training-data drift risk

  • Marketers retain control (rule explains itself)

How to use the recommendation

Weekly cadence

Every Monday: review the recommendation. Compare with last week's actuals. Decide:

  • Accept fully: apply suggested multipliers to per-platform budget caps

  • Accept partially: shift partway toward recommendation (e.g. half the delta)

  • Reject: keep current allocation (e.g. you have a strategic reason ROAS-only doesn't capture)

Apply gradually

Don't shift +50% on a platform overnight. Auction systems (Meta, Google) react poorly to abrupt budget changes — bid prices spike, audience auctions destabilize.

Apply over 2-4 days in smaller deltas (e.g. +15% Monday, +15% Wednesday, +15% Friday for a +50% total).

Compare with intuition

If recommendation contradicts your intuition: investigate. The rule sees ROAS only. Maybe:

  • The high-ROAS platform is small-scale (won't sustain doubled budget at same ROAS)

  • The low-ROAS platform has strategic value (brand reach, new market test)

  • Postback lag is masking real performance (see an-114)

Decide with full context.

Pair with channel comparison

Recommendation is the "what should be". Channel comparison (an-108) is the "what is". Read together.

Constraints + caveats

Period sensitivity

Recommendation uses the selected date range to compute ROAS. Shorter periods (last 7d) react fast but noisy. Longer (last 30d) stable but slower to spot drift.

For weekly cadence: last_14d is a reasonable balance.

Spend floor sensitivity

A platform with €100 spend and ROAS 5 may show "scale up" recommendation, but doubling to €200 won't necessarily preserve ROAS — diminishing returns kick in.

The rule doesn't model diminishing returns. You must.

Postback lag

ROAS within the last 24-72h is incomplete (Meta API delay, postback lag). For weekly recommendations: prefer last_14d so recent days are settled.

Strategic dimensions not captured

ROAS-only logic doesn't see:

  • Brand reach value (TikTok awareness today → Meta conversions next quarter)

  • New-market testing (intentional low-ROAS spend on a new geo)

  • Audience cap (you can't infinitely scale Meta — eventually you exhaust the addressable audience)

These need human judgment on top of the recommendation.

What it's NOT

To be clear about scope:

  • NOT an AI / ML model — pure rule

  • NOT predictive (no forecasting)

  • NOT applied automatically (you decide whether to apply)

  • NOT considering competitive dynamics, seasonality, or external factors

  • NOT a substitute for Rules Engine (which acts on entity-level conditions; recommendation is allocation-level)

Connection to Rules Engine (PRD-17)

The recommendation tells you "shift more to Meta". The Rules Engine (rul-*) acts at the entity level (campaign / adset / ad). They're complementary:

  • Recommendation: strategic budget mix (cross-platform)

  • Rules Engine: tactical entity action (intra-platform)

Workflow: use recommendation weekly to set per-platform total budget caps; use Rules Engine continuously to optimize within each platform.

See rul-105 actions.

Constraints

  • 90-day max date range (Cross-Channel limit)

  • 10-min Redis cache

  • target_currency required (no native currency option)

  • Feature gating: ENABLE_CROSS_CHANNEL_ANALYTICS

Common mistakes

  • Applying recommendation in full overnight: auction shock; apply gradually over days

  • Treating it as AI prediction: it's rule-based on historical ROAS only

  • Ignoring spend column: small-spend platforms have noisy ROAS; rule may over-recommend

  • Skipping postback lag check: short windows give incomplete ROAS data

  • Reading recommendation without channel comparison: missing context

Related