The ads desk
A Meta ads dashboard that starts with a decision, not a table
A report should open on the decision. The table is what you check after.
Ads Manager shows everything and tells you nothing. A clinic owner opens it, sees 16 ads and 40 columns, and closes it. The agency then spends Monday morning rebuilding the same 3 questions by hand: what is burning money, what is working, and what should we do about it.
40 columns, no decision
A Next.js app that pulls the account into 1 deterministic model and answers those 3 questions in order. Today ranks ads by severity against plain thresholds and pairs each flag with a suggested move and the budget it frees. Ads is the full table, but grouped by campaign with spend share, CPL tinted against the account average, and video hook and hold rates. Pulse is the weekly read: spend vs leads, CPL vs last week, creative health, and when leads actually land by day and hour.
severity first, table second
Morning triage
Every ad is scored against plain thresholds (spend with no leads, fatigue, low data). The queue opens on the worst one with the why, a suggested move, and the daily budget that pausing frees.
The grouped ad table
16 ads under 5 campaigns with spend-share bars, deltas vs the prior week, CPL tinted against the account average, and hook and hold rates for video.
Pulse
Spend vs leads over 14 days with the prior week greyed, CPL against last week, a creative-health split, spend by campaign, and top and worst performers.
When leads land
A day-by-hour heatmap of lead volume, so the clinic can see the 7 to 9pm bump and check its callback speed on evening leads.
Built to swap in real data
1 typed data model with a seeded generator. A Meta insights pull into the same shape lights up every view, with leads coming from the CRM rather than form fills.
1
ad surfaced for a decision out of 16, with the suggested move and the budget it frees
HandoverData is 1 file with a seeded generator, so screenshots never drift. Swapping in a real account is a Meta Marketing API pull into the same shape, with leads sourced from the CRM so CPL means booked consults, not form fills.
the whole app runs on invented data
Evidence · fig. 01–04