Most ad dashboards show you numbers and leave the decision to you. I wanted tabs that give the decision: turn this off, put money here, swap this creative, make more of this angle. Built in about two days on the Vibe template with Claude Code, running on a high-ticket coaching account. Before building anything I measured the account's own data, and one number shaped everything: Only about 1 in 3 ads that spend ever gets a sale. The median ad has spent $50–$165. But leads show up on ~97% of ad sets. So ranking ads by ROAS mostly ranks luck, and the #1 way to lose money is killing a winner that just hasn't converted yet. Every tab below is built around that. WHAT I BUILT 1) Decision Board: kill / scale / hold, with a "too early" gate • Every ad set gets a plain instruction: Turn these off, Put more money here, Not an ad problem, Leads aren't booking, Leave these alone. • It refuses to judge anything under your target cost per acquisition. It shows "too new to judge" and how much more spend it needs. • A kill needs 3× target spend with nothing to show. At 3 expected sales, seeing zero by luck is ~5%, so it's evidence, not impatience. • It reads the densest signal first: $X spent and zero leads is a kill days before ROAS means anything. • It never tells you to pause something that is converting. • It tells you which stage broke. "Books calls but doesn't close" is the offer or the closer, not the ad. • Acquisitions can be gated to a minimum sale size, so a $9 book doesn't count as a customer on a high-ticket account. If none of your sales clear the minimum (a low-ticket offer), it falls back to counting every sale and says so. 2) Fatigue Radar: swap creative before ROAS dies • Last 7 days vs the 23 days before, on cost per lead. • The trick: you can't compare 7d to 30d, because 30d contains the 7d and hides the decay. Every metric is additive, so 30d − 7d gives a clean "before" window at zero extra API cost. • Plain English: "A lead used to cost $8. Now it costs $20: 150% worse, and fewer people click it."