One live, high-level read on every BINA landing page and client — classified by performance, refreshed automatically every 30 minutes (the header's Data chip shows how fresh it is). It answers: what's making money, what's leaking it, what to scale, and who to call — across all clients and departments.
A single-file web app (index.html) hosted on Vercel. A scheduled job rebuilds the dataset every 30 minutes and stores it in Vercel Blob; the app reads it from /api/data. No browser or manual export needed — everything is API-driven. The 🔔 in the header lists any feed that falls behind.
| Overview | Portfolio pulse: spend, leads, appointments, sales, latest wins, best and worst clients. |
| Heatmap | Every client against every funnel metric in one grid, colored against its own target or its peers. |
| Campaigns | Meta and Google campaigns with spend, CRM leads, CPL and CPA; Scale & Pause is the action queue. |
| Creatives | Per-ad ROI, Gallery, Compare, and Fatigue (ads wearing out against their own previous week). |
| Landers | Every landing page with its status and funnel drop-off; Metrics is the spreadsheet export. |
| Clients | The roster (cards, table, large and flow views) and each client's deep dive, plus Follow-up, Calls, Coverage, Onboarding and Churned. |
| Sales | Closed-won deals with each sale's journey, and the Market Playbook. |
| Visits | Which clients are close enough to visit: each client's business address (Bina One, else its GHL location) and its straight-line miles from the office; visitable within the radius an admin sets (30 mi to start). The roster shows the same chip by every name; the Visitable only filter is on the Visits tab. |
| Report | Portfolio scorecard, funnel, CPA health and trends. |
| Suggestions · Angles · Notes · Ask AI | The action queue, ad angles by market, requests to the team, and questions in plain English. |
| 🔔 Alerts | Every open problem the app detects: late or failed feeds, the daily accuracy audit, funnel anomalies, budget pacing, creative fatigue. |
| Source | What it provides |
|---|---|
Base44 | Landing pages + LPIDs, funnel step tracking, service areas. |
Bina One (app.bina.cx) | The source of truth: Meta and Google spend, clicks, creatives; the CRM's leads, appointments, sales, calls and call transcripts (sales refresh every 2 hours). |
GHL (direct) | A once-a-day backup copy of lead counts, used only for a client whose Bina One copy is empty (the 🔔 says so). |
Analysis baseline | Funnel step counts, pixel-event status, page↔ad alignment, creative notes. |
The Landers tab breaks "insufficient" into actionable buckets instead of one pile:
| Bucket | Meaning |
|---|---|
| ⏳ Ramping | A few leads (1–9) — still building signal, may graduate to a verdict. |
| 💀 Dead | Zero leads on live spend — dormant or wasting budget (sorted by spend). |
| Runs on Google, not Meta — low Meta volume is expected, judged separately. |
Landers now carry Meta AND Google spend — a Google lander with spend is judged on CPL/CPA exactly like Meta (see the channel filter). Only true organic landers (no ad spend at all) are judged on lead→appointment % (client follow-up); their status prefix is organic_*.
| Metric | Good ✅ | Gray zone | Bad 🚨 |
|---|---|---|---|
| LP Conv% | ≥ 5% | 3–4.9% | < 3% |
| CPL | ≤ $80 | $81–$149 | ≥ $150 |
| CPA | ≤ $400 | $401–$999 | ≥ $1,000 |
Each ad gets a grey Engagement badge from its Meta click metrics over 90 days. Every metric becomes a sub-score from −1 (its bad line) to +1 (its good line), and the weighted average is the score. Hover any creative card to see the breakdown. It rates clicks and views only. The keep-or-kill call on every creative card is Scale / Watch / Kill: the ROI table's cost-per-lead rule over the last 30 days.
| Metric | Good | Bad | Weight |
|---|---|---|---|
| CTR — clicks ÷ impressions | ≥ 1.5% | ≤ 0.8% | 2× |
| CPC — $ per click | ≤ $1.50 | ≥ $3.00 | 2× |
| CPM — $ per 1,000 impr | ≤ $20 | ≥ $50 | 1× |
| Hook — 3-sec views ÷ impr (video) | ≥ 30% | ≤ 15% | 1.5× |
| Hold — 25%-watched ÷ impr (video) | ≥ 25% | ≤ 12% | 1× |
| Stage | Metric | What it measures | Better |
|---|---|---|---|
| Meta ads | CTR | % of impressions that clicked. Creative pull. | ↑ |
| CPC | Cost per link click. | ↓ | |
| CPM | Cost per 1,000 impressions — cost of reach. | ↓ | |
| Hook / Hold | Video stopping power / retention (video ads). | ↑ | |
| Landing page | LP Conv% | % of clicks that submitted the form. Page quality. | ↑ |
| Leads | Form submissions in the window. | ↑ | |
| CPL | Spend ÷ leads. Cost per lead. | ↓ | |
| Leads/$1k | Leads per $1,000 spent — efficiency at a glance. | ↑ | |
| Appointments | Appts | Booked appointments from this lander's leads (GHL). | ↑ |
| L→A% | % of leads that became appointments. Lead quality / speed-to-lead. | ↑ | |
| CPA | Spend ÷ appointments. Cost per appointment. | ↓ |
The Report routes every action to the team that can fix it.
| Department | Owns | Typical action |
|---|---|---|
| 🎨 Creative | Ad performance — CTR, hook, CPC, fatigue. | Refresh losing creatives; double down on winners. |
| 🔨 Funnel | Landing page + tracking — LP conv, pixel. | Fix low-converting pages & broken CompleteRegistration pixels. |
| 📞 Accounting | Client outcomes — CPA, lead→appt, off-CRM. | Call clients with high/rising CPA or slow follow-up. |
| 📊 Media | Budget allocation — dead spend, overspend, scaling. | Pause dead landers; shift budget to winners. |
Everyone gets the same Overview. Media buyers see only their own clients on every tab, and admins choose each person's tabs and clients in Admin settings.
The Report is now a pure reporting view — metrics, charts and trends, no to-do items (those live in the Suggestions tab). It answers "how is the whole business performing," anchored on the CPA ≤ $400 north-star.
| Section | Shows |
|---|---|
| 📊 Scorecard | Spend, Leads, Appts, Blended CPL, Blended CPA ★, landers/clients — each with the week-over-week delta. |
| 🔽 Conversion funnel | Clicks → Leads → Appts with the drop-off % and cost at each stage — shows exactly where volume leaks. |
| 🎯 CPA health | % of spend producing ≤$400 appointments, plus the lander CPA distribution. |
| 📈 By segment | Spend & CPA per media buyer / vertical / state / account manager (pivot selector). |
| 🧹 Portfolio mix | Status donut, appointments by source (Meta vs Google), headline↔ad alignment. |
| 🩺 Page & creative health | Pixel-firing %, average CTR, misaligned pages, funnel-length distribution. |
| 📉 Trends | Weekly spend / appointments / blended CPA lines from the daily history. |
| Lander | A landing page — the quiz/form funnel an ad sends traffic to. |
| LPID | Landing-page ID — the unique key that matches a lander to its Meta ads (via the adset name). |
| Funnel steps | How many screens the funnel has before the contact form. Read from the page's own "Question X of N" counter. |
| CompleteRegistration | The Meta pixel event for a form submit. If it's not firing, Meta optimizes blind even though leads arrive in GHL. |
| Off-CRM 📵 | A client whose leads aren't tracked in our GHL — so their lead→appt / CPA may be unreliable. |
| Channel | meta / google / both — all judged on CPL/CPA. Only organic (no ad spend) is judged on lead→appt. Filter by channel in the lander views. |
| Migration state | Activity flag: active (spending), stalled, stopped, or organic (Google). |
| Blended | A portfolio/client rollup computed from summed totals (e.g. total spend ÷ total leads), never an average of averages. |
| Target CPL / CPA | The client's goal cost per lead / appointment. Defaults when unset: CPL $75, CPA $400. |
| Setting | Default | Controls |
|---|---|---|
min_leads | 3 | Below this = Insufficient. |
win_lp_conv / lose_lp_conv | 5% / 3% | LP Conv% good / bad lines. |
win_cpl / lose_cpl | $80 / $150 | CPL good / bad lines. |
win_cpa / lose_cpa | $400 / $1,000 | CPA good / bad lines. |
cpa_max_reliable | $2,000 | CPA above this is ignored (tracking gap). |
lose_flags_needed | 2 | Bad metrics needed for Losing. |
| Metric | Good / Bad | Weight |
|---|---|---|
| CTR | 1.5% / 0.8% | 2× |
| CPC | $1.50 / $3.00 | 2× |
| CPM | $20 / $50 | 1× |
| Hook | 30% / 15% | 1.5× |
| Hold | 25% / 12% | 1× |
CPL target falls back to $75 and CPA target to $400 when a client hasn't set one. At-risk = CPA >20% over target or ≥15% higher than last week.
cron/baseline.json.Scheduled jobs copy each source into Vercel Blob, and the data build runs every 30 minutes (on the hour and half hour). An open page checks for a newer build and loads it by itself. The table below is the live schedule from the app's own feed list, with each feed's last good update.
| Overview | Role-based overview (COO / Account Mgr / Media / Tech). |
| Metrics | Full per-lander spreadsheet, groupable + CSV export. |
| Creatives / Alignment | Ad-level scores; page↔ad side-by-side. |
| Landers | Every lander grouped by status (cards / list / compact). |
| Report | Analytics dashboard — funnel, CPA health, per-segment performance, trends. |
| Suggestions | Prioritized "fix this ASAP" list — kill / fix / rebuild / call / scale. |
| Notes | File a fix / edit / add ticket for the team. |
| Ask Bina One | Ask anything — clients, campaigns, leads, calls; answers come from Bina One. |
Ping Itai — he owns this dashboard and the GHL automations.