About ROASt

The intelligence behind ROASt Labs.

A deterministic pipeline that scores campaigns, allocates budget, and applies platform-safe constraints — with full transparency at every step. No LLM involved in budget decisions.

Getting Started

ROASt Labs works with your existing Google, Microsoft, and Meta Ads accounts. Here’s how to go from sign-up to your first optimisation.

1
Connect your ad accounts

Head to Accounts and click Connect for each platform. You’ll authenticate via OAuth — ROASt never sees your password. Once connected, an initial sync pulls 90 days of campaign data: budgets, spend, conversions, impression share, and bid targets.

Supports Google Ads, Microsoft Ads, and Meta Ads. You can connect one or all three.

2
Review your portfolios

Your campaigns are grouped into portfolios — each with its own budget, target ROAS/CPA, and optimisation settings. Set a monthly budget for each portfolio and choose a preset to start with:

ConservativeSmall steps, tight caps
BalancedDefault — good for most
AggressiveLarger swings, faster
3
Set up goals (optional)

By default, the engine optimises against total platform-reported revenue. If you want to focus on specific conversion actions — leads, form submits, or purchases from a particular source — create a custom Goal in the Goals tab and assign it to your portfolio. The engine then scores entirely against those filtered conversions.

4
Run your first optimisation

Click Optimise on any portfolio. The engine scores every campaign and produces a set of staged recommendations — budget changes and bid target adjustments. Nothing is pushed to your ad accounts yet.

Review the recommendations, check the reasoning breakdown for each campaign, then click Execute when you’re ready. ROASt confirms every change landed via readback verification.

5
Configure automation

Once you’re comfortable with the recommendations, head to Automation to schedule nightly runs. We recommend starting with dry-run mode — the engine will stage recommendations and log results every night, but won’t push anything. Switch to auto-execute when you’re ready.

A global kill switch is always available to halt all automated execution instantly.

6
Monitor & tune

Use the Dashboard for a performance overview, pacing health, and account diagnostics. The engine’s calibration loop adjusts parameters automatically as data accumulates. For on-demand analysis, ask Flume — the built-in AI assistant — to generate reports, review performance, or diagnose issues.

Pipeline overview

ROASt Labs analyses your last 91 days of daily campaign data and runs a staged pipeline to produce budget and target recommendations. The pipeline is fully deterministic — every decision is the product of signal maths, not a model that guesses.

Signals Score Constrain Allocate Marginal reallocation Reserve handshake Platform adapter Staged recommendations

AI (Claude) ranks candidate keyword pauses + creative pauses, writes the weekly brief, and powers Ask Flume. Never used for budget or target decisions — those run on deterministic math. See the team breakdown for which agent uses what.

The AI Ops Team

ROASt is built around nine specialists working on your account in the background. Some act on it, some watch for changes, some explain the numbers. Some run on Claude. Most run on math. This is the team, what each one decides, and where their work shows up.

The Optimisers

Act on the account

Budget Pacer

Reallocates daily spend across your campaigns within each portfolio’s monthly budget. Fits a saturation curve per campaign nightly from your last 30+ days of data, then solves for the spend mix that maximises ROAS within your velocity caps and budget locks.

Decides via
Math — fitted Hill curves + Lagrangian allocation
Shows up in
Portfolio cards · Optimiser Logs · Change History
When it runs
Every night at 04:00 client-local; intraday pulses on Agency+
See also
2. The Optimiser · 3. The Pacer

Search Waste Hunter

Scans your Google search terms weekly. Filters for high-spend, low-converting candidates using deterministic spend + close-rate signals, then asks Claude Haiku to rank each remaining candidate for ad relevance against your portfolio goal description.

Decides via
Math (signal filters) + Claude Haiku (ranking)
Shows up in
Campaigns → Keywords subview → Review modal
When it runs
Sundays at 04:00 client-local
See also
7. Keyword Intelligence

Creative Fatigue Analyst

Spots fatigued ads across Google RSA, PMax, and Meta. Combines deterministic fatigue signals (frequency, performance decay) with Claude Haiku judging each candidate against your goal description. Sibling-count guards prevent ever stranding a campaign with its last working asset.

Decides via
Math (fatigue signals + sibling-count floors) + Claude Haiku (ranking)
Shows up in
Campaigns → Creatives subview → Review modal
When it runs
Sundays at 04:00 client-local
See also
8. Creative Intelligence

The Watchers

Alert you to changes

Pacing Watchdog

Flags portfolios drifting off their monthly spend pace. Triggers a daily digest when month-to-date spend is more than 15% off the prorated budget target, with the worst offenders sorted first.

Decides via
Math — MTD vs prorated budget comparison
Shows up in
Daily pacing digest email · Notifications panel
When it runs
Every day at 09:07 client-local
See also
3. The Pacer

Market Intelligence

Reads Google’s auction insights hourly to detect when a competitor enters or leaves your auction. Writes structured change rows that the Causal Correlation surface later uses to explain ROAS shifts back to specific market events.

Decides via
Math — auction-insights deltas + threshold detection
Shows up in
Audit tab → External changes timeline
When it runs
Hourly at :50
See also
13. Audit & Diagnostics

Health Officer

Surfaces tracking gaps, broken UTMs, and revenue divergence between ad platforms and your shop / CRM. Continuously grades the account’s measurement health and proposes specific fixes when something breaks.

Decides via
Math — validity checks + reconciliation deltas
Shows up in
Audit tab → Account Health Score module
When it runs
Nightly + on every connector sync
See also
13. Audit & Diagnostics

The Analysts

Explain & narrate

Model Architect

Re-fits each campaign’s saturation curve nightly from new data, then grades the engine’s own predictions against actuals. You can see in the Calibration tab how well the math is keeping up with reality, campaign by campaign.

Decides via
Math — Hill-curve Nelder-Mead refit + calibration evaluation
Shows up in
Dashboard mini-cards (calibration score) · Calibration tab
When it runs
Nightly, per client
See also
14. Calibration

Brief Author

Writes your weekly brief and daily mini-brief — named-agent prose that narrates what the team did this week, in plain English. References each agent’s work by name so the brief reads as a real ops report, not a chart dump.

Decides via
Claude — narration on top of structured agent activity
Shows up in
Brief tab · weekly email digest
When it runs
Sunday evenings (weekly); daily at 09:00 client-local (mini-brief)
See also
9. Context Hub & Ask Why

The Generalist

Talk to the team in plain English

Ask Flume

Free chat with full team access via MCP tools. Ask anything in plain English — Flume can read your account data, propose pauses, draft briefs, or hand a structured plan back. The same tools are also available to your own LLM via the public MCP endpoint, so you can plug Claude / ChatGPT / Gemini into ROASt as the controller and let ROASt be the data layer + safety net.

Decides via
Claude (Sonnet) with full MCP tool access
Shows up in
Agents tab → Ask Flume subview; also via the MCP endpoint for external clients
When it runs
On demand — counts against your monthly turn quota
See also
10. Flume AI

Honest framing. Five of these agents are deterministic math: Budget Pacer, Pacing Watchdog, Market Intelligence, Health Officer, Model Architect. Two are math + Claude ranking: Search Waste Hunter and Creative Fatigue Analyst (Claude judges candidate ad-relevance against your goal description; math handles the filtering and the apply). Two are Claude-led: Brief Author writes the brief; Ask Flume drives the chat. No agent autonomously changes budgets or targets — that’s Budget Pacer’s job, and Budget Pacer is pure math operating inside your own caps.

01

Performance Dashboard

The Dashboard is your command centre — a single view of portfolio health, system status, and actionable diagnostics across all connected accounts.

System status

At-a-glance cards for Accounts, Portfolios, Audit, Platform Mix, and Events — each with a status badge and quick link to the relevant tab.

Pacing health

Pacing gauges show month-to-date vs target spend for each portfolio. Colour-coded: green (on track), amber (slightly off), red (significantly ahead or behind).

Account Health score

A composite score across six dimensions: tracking health, budget utilisation, platform coverage, optimisation readiness, creative health, and keyword quality. Each dimension is scored 0–100 with a weighted contribution to the overall grade (A–F).

Revenue reconciliation

Compares platform-reported revenue with GA4 analytics data (when connected) to surface discrepancies between attribution models.

02

The Optimiser

The Optimiser scores each campaign in a portfolio and allocates the total budget in proportion to those scores. It also recommends target bid adjustments (tROAS / tCPA) where impression share data suggests a ranking constraint rather than a budget constraint.

Click Optimise on any portfolio to run the pipeline manually. Results are staged — every proposed change is visible before anything is pushed to your ad accounts. You can re-run and adjust as many times as you like before executing. Use Run All to stage all portfolios at once.

Score decomposition: Every campaign’s score is broken down into its constituent signals — you can see exactly how much ROAS, confidence, trend, IS data, and each other signal contributed. No black box.

Portfolio controls

Min / Max allocation % — floor and ceiling on each campaign’s share of portfolio budget

Max budget step per run — limits single-run budget change as a % of current daily budget

tROAS floor & ceiling — hard guardrails on target ROAS recommendations

Max target change % — velocity cap on tROAS / tCPA adjustments per run

Recency half-life — how quickly older data loses weight. Shorter = more reactive

Attribution lag days — recent days treated as incomplete for revenue signals

Presets (Conservative, Balanced, Aggressive, Turbo) provide a starting point. A Personalised option analyses your portfolio’s data and suggests optimal settings.

Signals

Every signal is computed from your last 91 days of daily campaign data. Recent days are weighted more heavily via exponential decay (configurable half-life, default 14 days).

Recency-weighted ROAS

Revenue divided by spend, with more weight on recent performance. The primary scoring signal — campaigns with stronger recent ROAS receive a proportionally larger budget share.

IS Lost to Budget

Impression share lost because the daily budget runs out. Campaigns with high IS Lost to Budget have proven demand going unserved — they receive a growth tilt boost proportional to their efficiency.

IS Lost to Rank

Impression share lost because bids are too low. Rather than adding budget, the engine routes these campaigns to target nudges — adjusting tROAS or tCPA to improve auction rank.

Confidence

A composite of data coverage (40%), conversion volume (35%), and ROAS stability (25%). Low-confidence campaigns blend toward the portfolio average so they are neither over-allocated nor starved.

Learning protection

New campaigns with limited data are guaranteed a minimum allocation — at least 50% of the portfolio average — so they can gather enough signal to score fairly.

Trend momentum

Compares recent 7-day ROAS against the prior 14-day ROAS, with winsorisation to cap outliers. Dampened by volatility and conversion consistency to avoid chasing spikes.

Diminishing returns

Detects when spend has grown but ROAS has fallen — a saturation signal. Dampens allocation by up to 50%. Disabled during promotional events to avoid misidentifying promo effects.

Attribution lag discounting

The most recent days have incomplete conversion data. Revenue from recent days is scaled by a completeness curve so the engine doesn’t over-index on partial data. Default lag: 7 days, configurable.

Anomaly detection

A pre-pass flags tracking outages (spend with zero revenue for 3+ days), ROAS spikes (>3× campaign median), and data ceiling breaches. Flagged rows are downweighted by 80% before scoring.

Day-of-week multiplier

Each campaign carries a per-day-of-week performance multiplier learned from its own history. Tomorrow’s DOW (since budget changes staged today take effect tomorrow) is what the score uses. Strength of the effect is controlled by a DOW weighting setting per portfolio.

Synthetic IS fallback

Campaigns that report zero impression-share data (common on Meta) receive estimated IS values derived from same-platform peers (dampened median) or platform defaults, so they can still participate in growth tilt and reserve bidding.

Growth tilt

Campaigns with above-average efficiency AND high IS Lost to Budget receive a growth-potential boost. The boost scales with the efficiency ratio (capped at 3×) raised to the power 1.5, modulated by IS headroom. Controlled by growthTiltWeight (default 0.5).

Hill-curve marginal value (MMM blend)

When Hill response curves are available for a campaign (fitted nightly from historical spend-vs-revenue data), the engine blends a marginal-return score into the base score. The blend weight ramps with curve confidence via a smoothstep function — high-confidence curves have more influence; low-confidence ones are ignored. This shifts budget toward campaigns with genuine headroom and away from those near saturation, even when raw ROAS looks similar.

Platform anomaly scoring

Platform adapters detect 8 anomaly types that directly affect scoring: creative fatigue (Meta CTR decline, 30% score penalty), audience saturation (Meta frequency exceeding thresholds, caps growth tilt), spend velocity spike (Meta 3-day spend > 2× prior week, 15% penalty), PMax ghost capacity (Google PMax spending < 50% of budget, blocks reserve eligibility), ghost budget (Microsoft 14-day utilisation < 50%, 25% penalty + reserve block), and no/low IS data (informational only). Penalties compound but are floored at 50% of the original score so a cascade of mild signals can’t zero a campaign out.

Bid mode modifiers

Manual-bidding campaigns get a small dampening (the engine is less confident allocating heavily to manually managed budgets). Target-based bidding (tROAS, tCPA) gets a small bonus since platform algorithms respond predictably to budget changes. Click-only optimisation gets a slight penalty since click-based goals are less directly tied to value.

Promo-aware scoring

During promotional events (§11 Events & Promotions), the engine adjusts its intelligence so it doesn’t misinterpret expected demand shifts as performance changes.

Exogenous demand multiplier

When set (e.g. 2.0 = expected 100% demand uplift), the engine normalises trend signals by the multiplier so promo-driven revenue increases are treated as expected, not as a growth signal to chase.

Anomaly threshold widening

ROAS-spike and ceiling thresholds are multiplied by the demand factor so legitimate promo spikes aren’t flagged as anomalies and downweighted.

Diminishing-returns dampening

DR signal strength is halved per multiplier unit during promos — ROAS decline during high demand may be temporary tapering rather than true saturation.

Historical–promo signal blend

On day 1 of a promo the engine has limited promo-period data. Rather than flying blind, it blends historical campaign signals (longer recency window) with promo-period signals. Progress-based: short promos (≤7 days) reach 100% promo data by their final day; longer promos cap at 7 days. Best performers from before the promo still get appropriate allocation on day 1; promo performance takes over as data accumulates.

Post-promo cooldown

For 4 days after a promo ends, negative trend and diminishing-returns signals are gradually dampened (80% → 20%) to prevent the engine from overreacting to the inevitable post-promo demand drop.

Cumulative change tracking

The engine tracks how much each campaign’s budget has changed over a rolling window to prevent excessive flickering. An asymptotic throttle reduces change velocity as cumulative changes approach the platform maximum.

60%
Google · 7 days
45%
Meta · 10 days
60%
Microsoft · 7 days

If the portfolio budget itself changes by more than 5%, the change history resets to give the engine fresh room to move.

Readback verification: After every execution, ROASt reads back the values from the platform API to confirm that the changes actually landed. Any discrepancy — rejected changes, API errors, or rounding differences — is logged and surfaced in the Optimiser Logs tab.
03

The Pacer

The Pacer tracks your portfolio’s monthly budget and distributes what’s remaining across the rest of the month, recalculating every time you run the Optimiser. It ensures spend is shaped intentionally — not just front-loaded by default.

Flat

Equal daily allocation for every remaining day.

Front-loaded

More spend in the first half of the month, ramping down toward month-end.

End-loaded

Reserves more budget for the second half of the month.

Modelled

Weights future days using your portfolio’s own historical day-of-week and week-of-month patterns, combined with impression share data.

You can pin individual days with a custom multiplier — click any future bar in the Pacing chart — to override the mode weight for that day. Pins persist across mode changes.

Flex Reserve: A configurable portion of the daily budget (0–25%, default 10%) is held back before base allocation. At the end of each optimiser run, campaigns bid for reserve funds based on signal strength. The reserve deploys via a sigmoid liquidation curve: strict early in the month, progressively relaxing toward month-end to prevent underspend.
04

Platform Adapters

After the core pipeline scores and allocates budget, platform-specific adapters apply constraints appropriate to each platform’s learning mechanics and API behaviour. The pipeline is platform-agnostic — adapters are the final safety layer.

Google Ads

  • Learning phase lock — campaigns in Google’s learning phase are capped at a 5% budget step
  • Spend capacity ceiling — if a campaign is only spending a fraction of its budget, recommendations are capped at 1.15× recent average spend
  • Compound stepping — large increases are broken into sequential steps, one per run
  • Confidence-based velocity — high-confidence campaigns get the full step; low-confidence ones are dampened

Meta Ads

  • ASC dwell lock — Advantage+ Shopping campaigns have a 48-hour minimum between budget changes
  • Learning stage awareness — campaigns in learning or learning_limited have reduced budget steps
  • Audience saturation guard — frequency data detects saturation; increases are capped when triggered
  • Creative quality dampening — campaigns with low quality or engagement rankings have increases dampened

Microsoft Ads

  • Ghost budget prevention — campaigns spending less than 50% of budget over 14 days are frozen at current budget
  • Conservative velocity — Microsoft’s smaller auction volume means more conservative dampening than Google
  • Compound stepping — same as Google: large increases broken into sequential steps
05

Budget Planner

Budget Planner answers two planning questions — one cross-platform, one cross-portfolio — using the same Hill response curves the live allocator relies on. Pick the mode from the switcher at the top of the tab.

Mode A · Platform Mix

Given a total budget for one portfolio, what’s the optimal split across Google / Meta / Microsoft? The engine fits a Hill response curve (spend → revenue saturation) per campaign over the last 91 days, aggregates to platform level, and uses Lagrangian bisection to allocate budget where marginal ROAS is highest. Each curve carries a 95% confidence interval from residual bootstrap (500 draws); narrow bands indicate a confident split, wide bands flag low-confidence curves and the live allocator’s MMM blend dials back automatically to match.

Mode B · Portfolio Mix

Given a total budget across multiple portfolios, what’s the optimal split to maximise revenue? Select an objective, choose the portfolios to include, set a total budget, and click Model. Mode B uses a marginal-ROAS greedy algorithm — each budget increment goes to whichever portfolio has the highest marginal return at its current level.

Efficiency curve

Current vs optimised split across budget levels. Three views: Revenue, ROAS, Marginal ROAS. The marginal view shows where each unit of spend hits diminishing returns.

Revenue uplift waterfall

Per-portfolio revenue change from current to optimised allocation — so you can see exactly where the gain comes from.

Spend ceiling

Each portfolio’s addressable ceiling is estimated from impression share data. Budget Planner won’t push beyond what the portfolio can absorb.

Stepped ramp

Apply changes immediately or use Step Over N Days to ramp budgets gradually — the nightly scheduler applies one step per night.

06

Goals & Conversion Mapping

By default, every campaign’s optimisation is based on its total platform-reported revenue and orders. Custom Goals let you define the specific conversion actions that matter for each portfolio — and the engine scores entirely against those.

Conversion actions are synced from your ad platforms during account connection. You create named goals that group one or more actions across platforms — for example, a “Qualified Leads” goal might combine Google’s “Form Submit” and Meta’s “Lead” action.

When a portfolio has a custom goal assigned, all engine signals — ROAS, trend, confidence, diminishing returns — are computed from the filtered conversion data.

Goals can use any of four conversion sources, chosen at creation time:

Platform (default)

Conversion tracking from Google, Microsoft, and Meta directly. Supports multiple conversion actions across platforms in a single goal.

GA4

Google Analytics 4 events as the revenue / conversion source. Link a GA4 property in Accounts and map a goal to a specific event (e.g. purchase). Uses sessionGoogleAdsCampaignId for Google and UTM matching for Meta and Microsoft.

Shopify

Shopify order data as ground-truth revenue, attributed to campaigns via UTM parameters. Attribution lag drops to 1 day — orders are recorded at checkout, not subject to platform attribution windows.

HubSpot CRM

HubSpot deals as the revenue / conversion source — ideal for long sales cycles and B2B. UTM-attributed, deal-stage filterable, with an extended attribution lag (default 35 days) so the engine waits for CRM value to materialise before evaluating.

Source-locked once assigned: a goal’s source is locked the moment it’s assigned to any portfolio — you can’t silently flip a live portfolio’s conversion source, because doing so would retroactively change yesterday’s ROAS. Source chips on every dashboard, card, and table tell you exactly where each number came from. A Revenue Reconciliation tile on the Dashboard compares platform-reported vs alt-source revenue side by side.
07

Keyword Intelligence

Negative keywords and pause candidates are the highest-ROI tactical work in PPC and the thing most accounts do worst — tedious, high-judgment, weekly at best. ROASt scans your Google search-term report and active keyword list every Sunday, classifies intent against your portfolio goal with Claude Haiku, and surfaces wasted spend + low-quality keywords in a unified review modal.

Close-rate-aware, not just conversion-aware

A standalone tool flags “this term had 0 Google conversions.” ROASt flags “this term drove 8 leads that never closed in HubSpot.” When close-rate context is available (HubSpot CRM or Shopify), the suggester routes through it — that’s the stronger signal by a mile.

Goal-semantic intent matching

The portfolio goal description (e.g. “new-build kitchen installations in London”) is fed to Claude alongside the term. “Second-hand fitting request” gets flagged as off-intent because Claude knows what the portfolio is actually for — a one-line LLM judgment a regex can’t touch.

Pause + negative in one apply

The unified review modal stacks pause candidates and wasted-spend search terms together — one Apply button, parallel Google API calls, consolidated toast. Cumulative-change tracking and sibling-count guards run in the suggester so you’ll never strand an ad group with too few keywords.

Auction insights → Competitor Watch

Auction-insight data feeds the Context Hub Competitor Watch panel and the Monday brief. New domain at 22% impression-share overlap? You see it Monday morning, not three months later.

Google-only at launch — Microsoft and Meta search-term sync are on the roadmap. Lifecycle: pending → strikes-3 → stale; absence-14d → stale; spend-2× → reactivate.

08

Creative Intelligence

Creative is the only daily lever on Meta — there are no keywords, bidding is Advantage+, audience targeting is automated. The single most valuable PPC motion is “kill underperformers, scale winners, watch frequency.” Today most teams go back to Ads Manager to do it. ROASt scans Google + Meta creative weekly and ships a unified review modal that pauses Low Google assets and fatiguing Meta ads in one apply.

Six creative sub-views

Behind Campaigns → Creatives: RSA assets, PMax asset groups, Shopping products, Meta ads, Meta winning-creatives library, and a cross-platform Creative Health rollup. One nav, no platform-switching.

Cross-platform fatigue scanner

Sundays at 04:00 local. Pulls Low RSA assets, fatiguing PMax assets, and Below-average Meta ads with rising frequency — all judged against your portfolio goal description by Claude Haiku, not a hard threshold.

One review, one apply

Three sections in the unified modal: RSA pauses, PMax pauses, Meta ad pauses. One Apply, parallel API calls, consolidated toast. Sibling-count guards (RSA ≥3, PMax ≥4, Meta ≥1) run in the suggester so you never strand a campaign with too few headlines or one ad in the set.

Engine cross-confirmation

When the scanner’s creative-fatigue finding agrees with the engine’s anomaly detector on the same campaign, the Audit tab fires a creative_fatigue_detected finding (critical severity). Two systems agreeing is a much stronger signal than either alone.

Pause-only — ROASt won’t generate copy, ad-set duplicates, or audience edits. Apply uses the smallest reversible unit per platform: status=REMOVED on Google asset entities (reversible from the Ads UI), status=PAUSED on Meta ads. Microsoft RSA support pending the Microsoft adapter follow-up.

09

Context Hub & Ask Why

Every PPC manager has had the “why is ROAS down?” call where the honest answer takes 45 minutes of clicking across Google Ads, GA4, Slack, the client’s Notion — and still ends with a hedge. ROASt compresses that to one click. Upload your landing pages, brand briefs, dated promos, creative refresh notes, audit CSVs, and client-meeting transcripts. When an anomaly lands, ROASt cross-references the drop against everything it knows.

Context Hub

Per-client knowledge store: PDFs, plain text, manual notes, scraped URLs (with weekly diffing), emails. Auto-rebuild on upload (30s debounce). Chunked, embedded via OpenAI text-embedding-3-small, retrieved on-demand by Flume and the narrative generator.

External Changes timeline

URL diffs, CSV imports, manual entries, creative changes (per-platform asset modification dates, synced automatically). The ledger of everything that happened outside ROASt that might have moved the numbers.

“Explain this” on every anomaly

One click on any anomaly row → server-generated narrative paragraph synthesising ranked causes, relevant Context Hub panels, GA4 engagement signal, and a hedged-language fallback when engine confidence is low. Pasteable into a client reply.

Weekly Brief

Monday-morning narrative summary delivered via dashboard module + email. Same causal-narrative plumbing as “Explain this” — pacing, top movers, anomalies, creative + keyword opportunities, competitor watch — written for an agency operator triaging multiple clients.

PLG remediation chips: every causal narrative emits a missingSources list describing data sources the generator couldn’t consult because they’re empty (“I couldn’t check your landing page because it’s not connected — add it here”). Click-throughs deep-link into Context Hub. The product teaches itself how to give richer answers next time.
10

Flume AI

Flume is Ask Flume, the Generalist on the AI ops team — the surface you talk to in plain English when you want the team’s help across any tool. Same model as ChatGPT-class assistants; the difference is the MCP tools underneath. Flume can read your campaign data, portfolio settings, and engine outputs — but it never makes budget decisions on its own. All budget and target recommendations are produced by the deterministic pipeline.

Ask Flume questions in natural language, or choose from pre-built prompts to generate structured reports:

Performance Review

Spend, ROAS, trends, top movers, budget concentration, and recommendations across all portfolios.

Pacing Review

Month-to-date pacing health, projected month-end spend, and portfolios materially off plan.

Recommendations

Highest-impact optimisation opportunities with supporting evidence and prioritised actions.

Account Health Check

Multi-dimensional health score breakdown with per-dimension diagnostics and fix suggestions.

Reports are saved to the Documents sidebar and can be exported as HTML or PDF. Flume usage is metered per plan tier.

MCP · bring your own Claude

Power users can hand the controls to their own Claude (Cowork, Claude Desktop, or any MCP client) via ROASt’s Model Context Protocol endpoint. Mint a long-lived token in Settings → API Access, paste it into your MCP config, and your Claude inherits 69 ROASt tools — 42 read-only (campaigns, portfolios, goals, audits, reconciliation, briefs, keyword + creative analytics) plus 27 write tools covering portfolios, budgets, goals, events, automation, keyword + creative pause applies, and confirm-gated destructive deletes.

Writes route through the same staging + audit pipeline the in-app Optimiser uses — nothing skips the safety net. Destructive deletes (portfolio, goal, event, transition plan) require an explicit confirm: true flag, refused otherwise. MCP usage doesn’t debit your Flume turn quota; you pay your own Anthropic bill via your Cowork / Claude subscription.

11

Events & Promotions

The Events system lets you schedule promotional periods and settings changes on a calendar, with automatic activation and deactivation managed by the scheduler. Drag an event template onto the calendar, set the dates, and the engine handles the rest.

Promo mode

Activates the engine’s full promotional lifecycle: snapshots current settings, applies turbo settings, enables intraday runs (2-hour interval), and on deactivation restores the snapshot with a 4-day post-promo cooldown.

Settings override mode

Merges a preset and/or specific setting overrides onto portfolio settings for the duration. Useful for seasonal adjustments, testing strategies, or temporarily tightening guardrails.

Promo-aware scoring: During events, the engine blends historical signals with live promo-period signals. On day 1 it uses historical performance weighted toward recent winners. As promo data accumulates over 7 days, it progressively takes over — preventing the engine from flying blind or over-correcting.

While an event is active, affected portfolios’ settings are locked — manual changes are blocked and the UI shows a banner with the event name and dates.

12

Automation & Scheduling

The scheduler automates optimiser runs without manual intervention. Each portfolio can be configured independently — nightly runs, intraday runs, auto-execute on or off.

Nightly runs

Each portfolio can be configured with a nightly run time (default 23:50). The scheduler stages recommendations and optionally auto-executes them. Dry run mode stages but never executes.

Intraday runs

For portfolios that need faster reaction times, intraday runs can be enabled with a configurable interval (minimum 1 hour). An optional time window restricts runs to business hours.

Transition plans

When you apply a budget change via Budget Planner’s Step Over N Days option, the scheduler creates a transition plan. Each night, one step is applied toward the target budget.

Safety features
  • Kill switch — immediately halts all automated execution across all portfolios
  • Dry run mode — stages recommendations and logs results, but never pushes to ad platforms
  • Concurrency guard — only one sync or optimiser job per user per platform at a time
  • Execution notifications — email digests after each batch run with success/failure breakdown and pacing alerts
  • Automatic backups — database backup before each nightly batch (local 7 days, remote 30 days)
13

Audit & Diagnostics

The Audit tab (Mission Control) surfaces conversion tracking issues and account health problems before they affect optimisation quality.

Conversion tracking audit

A 30+ check diagnostic that detects double-counting, broken tags, zero-value conversions, stale actions, missing UET, GA4 / Shopify sync staleness, attribution drift, and more. Each issue includes severity, affected campaigns, and a one-click fix where possible.

Account health breakdown

Six dimensions scored independently: tracking health, budget utilisation, platform coverage, optimisation readiness, creative health, and keyword quality. The composite score gives you a single number to track over time, graded A–F.

Recommended actions

Prioritised suggestions based on audit findings — fix broken conversion tracking, address budget gaps, resolve pacing issues, or connect missing accounts.

Throttle diagnostics

Per-campaign view of cumulative change and remaining headroom within the platform’s rolling window. See exactly why a campaign’s budget didn’t move as much as expected.

14

Calibration

The engine maintains a per-portfolio feedback loop that compares its predictions against actual outcomes and adjusts parameters over time. Shrinkage blends learned values toward safe defaults until evidence accumulates (5–20 observations), and staleness decay with a 14-day half-life reverts dormant portfolios so they restart cautiously. Calibration is fully automatic and runs as part of the nightly scheduler.

01
Snapshot

When recommendations are staged, the engine records predicted ROAS, spend utilisation, IS Lost to Budget, and confidence

02
Observe

Waits for attribution to complete. Dynamic window: small changes use base lag; large increases add days for smart bidding to ramp

03
Tune

Compares predicted vs actual and updates calibration biases via EWMA. Adjusts spend ceiling, ROAS floor, confidence dampening, and saturation steepness

15

Security & Trust

ROASt Labs manages real ad budgets — so trust and transparency are foundational, not optional.

Staged before executed

Every recommendation is staged and visible before anything is pushed to your ad accounts. You review, adjust, and approve. Nothing happens behind your back.

Readback verification

After every execution, ROASt reads back the values from the platform API to confirm that the changes actually landed. Discrepancies are logged and surfaced.

Token encryption

All OAuth tokens are encrypted at rest using AES-256-GCM. Tokens are decrypted only in memory for the duration of an API call.

Automatic backups

Database is backed up before every nightly batch. Local backups retained for 7 days, remote backups for 30 days. Full export/import is available for data portability.

No LLM in budget decisions

AI (Flume) is used for insights, narratives, and report generation only. Every budget and target recommendation is the product of deterministic signal maths — reproducible, auditable, and explainable.

Ready to see it in action?

Connect your ad accounts and ROASt will show you exactly what it would recommend — before you execute anything.