Skip to content
esc close · switch
LYRA/ Tools/ Diagnostic/ Location Performance Intelligence
Diagnostic Weekly cronLyra Agent reasoning

Geo underperformers , named.

Location Performance Intelligence runs a weekly cron over your campaign location data, ranks every campaign × location pair by ROAS, and produces a list of split opportunities for the underperformers. Each opportunity comes with a Lyra-Agent-written reasoning, an estimated improvement, and a confidence score. Detection is automatic; the apply step is yours.

Weekly cron · Sun 02:00 UTC · Percentile-based tiers · Opportunities, not auto-applies
What we read · input surface

Every campaign, every location, every Sunday.

The sync service rebuilds location_performance_weekly each Sunday at 02:00 UTC, aggregating spend and conversion by campaign × location across the previous 7 days. The detection layer ranks tiers and emits opportunities to a queue you review the following morning.

Run · Sample · Basalt DTC · sweep #19 Apr 26, 2026 · 02:14 UTC · weekly window
01 · Cadence Sun 02:00 UTC Weekly cron Runs every Sunday at 02:00 UTC. Newly connected accounts are picked up on the next Sunday sweep.
02 · Granularity Camp × loc Per pair Every campaign × location pair gets its own ROAS percentile within the campaign. No cross-campaign comparison; each campaign is its own ranking universe.
03 · Tiers 20-60-20 Percentile cuts Top 20% (overperforming), middle 60% (within band), bottom 20% (split candidates). Per campaign, not account-wide.
04 · Status flow 3-stage Detected → approved → implemented Detection writes opportunities to a queue. You approve. You implement (in Lyra or Google Ads). All three states logged.
The opportunities · generated artefact

Out: a split opportunity queue.

Below is a sample queue from the run above. Total opportunities flagged, distribution across the three tiers, and the top individual opportunities — each with the campaign × location pair, performance variance, estimated improvement, Lyra Agent reasoning, and confidence score.

Loc-sweep · basalt-dtc · #19 Apr 26, 2026 · 02:14 UTC Weekly sweep · 47 opportunities flagged v.0.9 · location_performance_weekly
Opportunities flagged
47 / 100
Several splits worth reviewing ▲ +12 vs sweep #18 · 7d ago
Opportunities by tier Top 20% · Mid 60% · Bottom 20% (split candidates)
Bottom 20% · split candidates 47
Mid 60% · within band 142
Top 20% · overperforming 47
# Check Scope What we found Suggested action Severity
01 DE underperforming · split candidate tier_bottom · variance_high PMax · Autumn · DE −34% ROAS variance vs campaign baseline. Spend share 18%, conversion share 9%. Confidence 0.87 · Lyra Agent: "Split DE into its own campaign with tightened tROAS to recover the lost CVR delta." Approve split → implement Critical
02 FR underperforming · split candidate tier_bottom · variance_high Brand · Search · FR −28% ROAS variance vs baseline. Conversion rate matches account average; CPA is the drag. Confidence 0.81 · Lyra Agent: "Split FR with capped CPC to relieve auction pressure." Approve split → implement Critical
03 ES mid-tier · watch tier_mid · variance_moderate Display · Trail · ES −12% variance vs baseline. Mid-tier; not yet a split candidate, but close to the bottom-tier cut-off. Worth re-checking in the next sweep. Watch — re-evaluate next Sunday High
04 IT consider geo-split · context flag tier_bottom · context PMax · Road · IT High spend share, mixed conversion across IT regions. Sub-national split (north/south) might isolate the dragging cluster. Confidence 0.62. Review at sub-national granularity High
05 Mid-tier locations on PMax · Road tier_mid · stable PMax · Road · 8 locations Within-band variance across 8 mid-tier locations. No action needed; stable performance. Monitor · no split Medium
06 Low-volume tier suggestion · GR, PT tier_bottom · low_volume PMax · Trail · GR, PT Variance large but spend small. Low-volume noise; not worth a split until volume grows. Confidence 0.41 · Lyra Agent: "Wait for ≥ €200/wk per location before splitting." Defer · wait for volume Medium
6 of 47 opportunities shown · ranked by variance × spend share Stored in location_split_opportunities · status: detected
Methodology · how the sweep works

Percentile ranking, Lyra Agent reasoning, your call.

The detection pipeline is rule-based: aggregate by location, rank by ROAS within each campaign, flag the bottom percentile. The Lyra Agent enters once a candidate is shortlisted to write the reasoning string and emit a confidence score. The apply step is human.

01 · Tier rankingPercentile

Top 20 / mid 60 / bottom 20 by ROAS.

Within each campaign, sort the campaign × location pairs by 7-day ROAS. Top quintile is overperforming; bottom quintile is the split candidate set. Mid 60% gets a watch flag if variance grows.

Critical Bottom quintile · variance > 25%
High Bottom quintile · variance 10–25%
Medium Mid quintile · approaching cut
02 · Variancevs baseline

Location ROAS vs campaign baseline.

Performance variance = (location ROAS − campaign baseline ROAS) / campaign baseline ROAS. Negative variance flags locations dragging the campaign; positive variance flags locations carrying it.

Critical ≤ −25%
High −10% to −25%
Medium −10% to 0%
03 · Estimated improvementProjection

How much a split is worth.

Project the recovery from splitting: location moves to its own campaign with its own bid strategy, CPCs drop to the auction baseline. Estimated improvement is in percentage points of ROAS, computed from variance × spend share.

Range Typically 5–25%
Caveat Projection, not guarantee
04 · Lyra Agent reasoningPer opportunity

Why this split, in human language.

Once a candidate is shortlisted by the rule layer, the Lyra Agent reads the structured opportunity (variance, spend share, conversion delta, locality context) and writes the reasoning string. The Agent never invents the variance; it narrates what the rules surfaced.

Layer Post-detection · narrative
Falls back to Variance string if Agent unavailable
05 · Confidence score0.0–1.0

How sure are we this is worth it?

Confidence reflects: variance magnitude, spend share (volume signal), data freshness, and locality context (small countries get a confidence haircut). 0.7+ is high-conviction; below 0.5 is a watch flag, not a split.

High ≥ 0.70
Mid 0.50–0.70
Low < 0.50 · watch
06 · Status workflow3-stage

Detected → approved → implemented.

Detection writes opportunities to a queue with status=detected. You move them to approved when you've reviewed; implemented when you (or the Lyra Agent in chat, if you ask) ship the split. All three states logged with timestamps and the user who acted.

Detected Auto · cron output
Approved Operator-confirmed
Implemented Live in Google Ads
Frequently asked

The questions about how this actually runs.

When does the sweep run?

Weekly · Sunday 02:00 UTC. Each Sunday's run rebuilds the location_performance_weekly table and emits split opportunities to a queue you review the following morning. Newly connected accounts are picked up on the next Sunday sweep.

Why weekly and not daily?

Geographic ROAS needs a meaningful sample to be honest. Daily runs would emit noisy opportunities (single-day swings driven by inventory, not real performance gaps). Weekly aggregation produces stable signals worth acting on.

How are the tiers calculated?

Within each campaign, every location is ranked by 7-day ROAS into percentile tiers: top 20%, middle 60%, bottom 20%. Ranking is per-campaign, not account-wide — each campaign is its own ranking universe so you don't compare a brand campaign to a generic one.

Does the tool apply splits automatically?

No. Opportunities flow through a 3-stage status workflow — detected (auto, by the cron), approved (you, after review), implemented (you, when you ship the split in Lyra or Google Ads). All three states are logged with the user who acted. The Lyra Agent in chat can sequence the implementation if you ask.

What's the confidence score actually telling me?

How sure we are the split is worth doing. It blends variance magnitude, spend share, data freshness, and locality context. 0.70+ is high-conviction (act); 0.50–0.70 is mid (review and decide); below 0.50 is watchlist (revisit next week, don't act yet).

14-day free trial · No credit card · Cancel in one click

Run the audit.
Keep the findings.

Connect your account and let Lyra run its 18 tools for 14 days. If the projected waste recovery isn't worth at least 10× the $49, don't pay. You keep every insight either way.

Read-only connect · write access opt-in per tool · SOC 2 in progress · GDPR + CCPA compliant