Revenue
All ST Tenants · 90d
Jobs Done
All Tenants · 90d
Calls
All Tenants · 90d
Booking Rate
All Tenants · 90d
Ad Spend
PPC + LSA · 90d
ROI
Revenue / Ad Spend
Ad Spend
Clicks
Calls
Booked
Revenue
🔄 Revenue Pipeline Flow · Where Calls Become Revenue
PHASE 3 GATE: NOT MET
Visual pipeline showing each stage from PPC ad click → phone call → booking → estimate → invoice. Green = flowing, Red = blocked, Orange = degraded. Data from Avoca + ServiceTitan + Google Ads.
💸
Ads Running
✓ Active
Utah PPC + LSA
👆
Clicks
Loading…
📞
Calls
Loading…
📅
Booked
0
0% booking rate
📋
Estimates
0
No data yet
💰
Revenue
$0
ROAS: 0.0x
🚨 Pipeline Blockers
  • Call → Booking (0%): Avoca marks new PPC callers as "Excused" — exits them from the pipeline entirely. No booking path for first-time callers.
  • Booking → Estimate: Zero PPC bookings means no estimates generated from paid traffic.
  • Estimate → Revenue: Pipeline empty — no revenue attribution possible.
  • Dialpad Access: Pending Derrick's response — no call recording API available for QA scoring.
✅ What's Working
  • Ads → Clicks: CTR healthy, campaigns generating qualified traffic.
  • Clicks → Calls: Tracking numbers active, calls being captured in ServiceTitan.
  • Avoca Webhooks: Payload ingestion fixed — transcript, recording_url, and AI analysis now stored.
  • Revenue Sync: Nightly cron job (2:00 AM) backfills Estimate + Invoice data from ServiceTitan.
📌 Next Steps to Unblock
  1. Fix Avoca "Excused" Disposition: Work with Avoca engineering to ensure new PPC callers enter the booking pipeline (not marked as Excused).
  2. Implement Call QA Cadence: Score 10-20 calls/week to understand WHY callers aren't booking — is it pricing, availability, or bot logic?
  3. Speed-to-Lead SLA: Measure actual response times (<30s for LSA, <60s for PPC) to catch leads before they call competitors.
  4. Dialpad Integration: Once Derrick provides access, pull call recordings for systematic QA review.
  5. GBP Budget Reallocation: Shift 50% of PPC budget to GBP optimization (Mark's directive) — GBP is highest volume channel.
🤖 Avoca Voice AI Scoreboard (Weekly)
STABILIZATION SPRINT
Bookable Booking Rate
Target: ~30% (Spam Cleaned)
Spam Calls
Utah Skew High
Transfer Rate
Goal: < 15%
Bot QA Score
CSR Rubric Alignment
Missed Opps Recovered
Nightly Recovery Loop
Incremental Rev
Attributed to Recoveries
🏠 HVAC Replacement Funnel — Iowa vs Utah (30-day window, updated daily)
🌽 Iowa (Grimes)
— annualized
Revenue (30d)
Completed Jobs
Avg Ticket
$ / Completed Job
ROAS: · Total spend: · Completion rate:
🏔️ Utah
— annualized
Revenue (30d)
Completed Jobs
Avg Ticket
$ / Completed Job
ROAS: · Total spend: · Completion rate:
📈 CEO Growth Verdict by Brand
Brand Ad Spend Attributed Rev CAC ROI Multiplier Verdict
Loading verdict data...
* True ROAS — Customer-first matching: all invoices for the same customer within 90 days of initial booking, including technician follow-up revenue.
Revenue & Operations · All Brands · Last 90 Days
Brand / MarketRevenueJobsCompletedCallsAvg Ticket
🔥 GR Utah
🏠 GR Iowa (Des Moines)
🏠 River City (Omaha)
🏠 Cornerstone
TOTAL
💡 Conversion Insights
Loading from attribution API...
⚡ Needs Attention
Loading…
  • Loading issues from Linear…
✅ What's Working
  • Loading completed items from Linear…
🔥 Strategy Roadmap
LOADING
Loading phases from Linear…
Regional Lead Volume Heatmap · Utah & Iowa
Bubble radius correlates to Estimated Market Size. Deep slate tiles powered by CartoDB.
▸ Attribution Gaps & Data Bridging
⚠️ Attribution Gaps
  1. Loading from Linear…
▸ System Health · 115 MCP Tools
Connector Status
Loading…
Last refresh:
💸
Ad Spend
PPC + LSA (UT+DSM) · 90d
📊
Conv Rate
goldenrulephc.com · GA4 · 90d
📞
LSA Leads
Utah + DSM · 90d
👁️
Sessions
All GA4 · 90d
🎯
Conversions
GA4 · 90d
GBP Rating
DSM + Utah · CDP Live
💬
Reviews
Google · CDP Live
Channel Performance · All Properties · GA4 · Last 90 Days
ChannelSessionsConvRate
Loading channel data...
Night/Weekend Opportunity · Utah Market
Competitors go dark after 6 PM — massive wedge for LSA and PPC bids.
WindowCompetitor AdsOpp Score
Weeknights (9pm–12am)2 of 30 active9.2 / 10
Weeknights (12am–5am)1 of 30 active9.8 / 10
Saturday (6pm–12am)3 of 30 active8.5 / 10
Sunday (all day)4 of 30 active7.1 / 10
LSA Performance · All Accounts · 90d
Total Leads
Leads / Month
▸ Campaign Detail · Utah PPC
Campaign data loads via MCP
▸ 📞 Tracking Numbers · Utah (20 numbers)
📞 Utah Phone Tracking Inventory
All numbers forward to (515) 461-9970 · Source: ServiceTitan Utah tenant · Last updated Apr 16, 2026
NumberCampaignTypeStatus
Loading dynamic tracking numbers from ServiceTitan...
📞
Total Calls
All ST Tenants · 90d
🤖
AI Calls
Avoca · 90d
👤
Human Calls
ServiceTitan · 90d
📊
AI Book Rate
Avoca · 90d
📊
Human Book Rate
ServiceTitan · 90d
📉
Gap
AI−Human · pts
📋 Call Handling Scorecard · By Brand
Call volume, booking rate, and abandonment across all ServiceTitan tenants.
BrandTotal CallsBookedBooking RateAbandoned
Loading call data from ServiceTitan…
🤖 AI vs Human · Booking Comparison
Avoca AI handles overflow/after-hours calls. Compare booking effectiveness.
🤖 AI (Avoca)
Booking Rate
👤 Human (CSR)
Booking Rate
Performance Gap
pts (AI − Human)
🎯 Conversion Command Center · Call \u2192 Revenue Pipeline
Visual call-to-revenue pipeline monitoring. Target benchmarks from Utah PPC Audit (May 2026). Click waterfall bars to drill down into individual calls.
Click the Customer Engine tab to load call leak diagnostic...
📊 ROAS Pipeline Health & Insights
Live attribution pipeline status, data flow visualization, and gap detection. Data from gr_roas_snapshots.
Click the Intelligence tab to load pipeline health data...
🔍 Search & LSA Feed (Live)
Top Search Terms
Term Clicks Cost
Loading live terms...
Recent LSA Leads
Time Type Status
Loading live leads...
▸ System Health · Data Pipeline
🔧
115
MCP Tools
Live
⚠️
Down
ConnectorBrand / SiteToolsStatus
Loading MCP status...
🏆 Competitive Intelligence · Utah Market
Loading competitive intelligence...
▸ 🤖 Attribution Pipeline Status
🔗
Match Rate
📞
Avoca Calls
🔧
ST Jobs
🧾
Invoices
Per-Tenant Pipeline
TenantJobsInvoicesStatus
Loads when attribution API is fetched
📋 Sprint Board · Active Phase
Active issues from Linear — auto-updating
IssueTitleStatusAssigneeDue
Connecting to Linear API...
📊 Operations · All Brands
Jobs
All ST · 90d
📊
Completion
All ST · 90d
💰
Avg Ticket
All ST · 90d
👥
Members
All ST · 90d
📞
Booking Rate
All ST · 90d
💰
Revenue
All ST · 90d
📝 Release Notes
Changelog and updates for the Golden Rule Command Center.
v4.1.2 — UI Versioning & Cleanup Apr 30, 2026
  • UI Version Control: Hard-coded version synchronizer fixes in index.html to reflect real production versions.
  • Demand Component Removal: Dropped legacy Channel Mix graphic to reduce layout noise and maximize high-signal KPI visibility.
v4.1.0 — Dashboard Hydration & Infrastructure Apr 30, 2026
  • P0: ROAS Agent Restored. Resolved infinite loading states by fixing Cloudflare/Vercel CORS preflight errors in proxy handler.
  • P1: Growth & Relationship Engine Hydration. Swapped final structural mocks for dynamic bindings to the live API architecture.
  • P1: Unified Roadmap. Mapped dashboard tracking logic directly to the formal 6-phase growth blueprint.
v4.0.1 — Multi-Tenant Pipeline & Revenue Parity Apr 29, 2026
  • P0: Utah Revenue Sync. Multi-tenant pipeline correctly queries utah/grimes/rivercity API endpoints to close the revenue gap.
  • P1: Object Merging Hardened. API `aggregate.js` rewrote to recursively merge deep pagination chunks dynamically across brands.
v4.0.0 — Groove Library Build & ROAS Agent Apr 28, 2026
  • P0: Dual-Build Artifacts. Ships as standard standalone site and Vite-bundled library (`dist/dashboard.js`).
  • P0: Autonomous ROAS Agent. Full pipeline: Observer, Analyzer, Recommender, Executor, Measurer with Vercel Cron alerts.
  • P1: LSA Auto-Rating. AI detects LSA spam via ST sync and automatically applies refunds to Google Ads using ProvideLeadFeedback().
v3.9.0 — Pre-Computed Pipeline + Iowa Fix + Cloudflare Deploy Apr 22, 2026
  • P0: Server-Side Pre-Computed Pipeline. Migrated 2,181 lines of client-side transformation to server-side aggregation. Dashboard payload reduced from 8.9MB → ~114KB. Sub-second rendering via Neon DB snapshot.
  • P0: Iowa Pagination Fix. Iowa (Grimes) was hitting 5,000-record API cap, showing exactly 15,000 for jobs/invoices/customers. Raised limit to 50,000 — no snapshot size impact since only counts are stored.
  • P0: Ad Wedge Chart Fix. Fixed "undefined" rendering on all 7 day bars of the Performance Drop-off chart. Root cause: missing clicks/isShare/clickShare fields in dayOfWeek static data.
  • P1: Cloudflare Pages Dual-Deploy. Dashboard now deployed on both Vercel (API + frontend) and Cloudflare Pages (static frontend). Dynamic API_BASE resolves cross-origin fetch automatically.
  • P1: GBP API Integration (GTM-1279). Engineered new Vercel serverless cron endpoint (`api/cron-gbp-intel.js`) for the modern Business Profile Performance API. Enabled required APIs in GCP. Currently soft-blocked by Google's API Quota approval process.
  • P2: Full Pagination Audit. Verified all 16+ data sources for truncation. Only Iowa was affected; soft caps (100 search terms, 200 GSC queries) are intentional.
v3.8.0 — CEO Growth Verdict + 503 Retry Hardening Apr 21, 2026
  • P0: CEO Growth Verdict by Brand. New executive table showing per-brand Ad Spend → Booked Revenue → CAC → ROI Multiplier → Verdict. Dynamic badges: HYPER-SCALING (>10x), SCALING (>5x), STABLE (>3x), NEEDS ATTENTION (<3x), ORGANIC ONLY (no spend). TOTAL PORTFOLIO aggregation row on All Brands view.
  • P0: 503 Retry with Exponential Backoff. Chunks that fail with HTTP 503/502/429 now auto-retry up to 3 times with exponential backoff (2s → 4s → 8s). Previously, a single 503 permanently dropped 15 tools of data per chunk.
  • P1: Reduced Concurrent Chunks. Lowered parallel chunk limit from 8 → 4 to reduce proxy overload that was triggering 503 errors.
  • P1: Progressive Rendering. Dashboard now updates incrementally as each chunk succeeds, instead of waiting for all chunks to complete before showing any data.
  • P2: CSS Fix. Added missing .tag.yellow class for STABLE verdict badge rendering.
v3.4.0 — Mobile Responsive Hardening Apr 19, 2026
  • P0: Full Mobile Responsive Overhaul. 4-tier breakpoint system (1024px tablet, 768px large phone, 480px small phone) with progressive density scaling across all dashboard components.
  • P0: Touch-First Navigation. Topbar stacks vertically on mobile with centered logo. Pillar tabs become sticky-nav on mobile for persistent section access. All interactive elements meet 44px minimum touch targets.
  • P1: Attribution Funnel Mobile. Horizontal funnel bar transforms to a vertical label→value stack on phone screens, preserving conversion rate indicators between stages.
  • P1: Scrollable Data Tables. All data tables and Avoca tables gain horizontal scroll with iOS touch momentum. Card padding auto-adjusts to maximize table viewport.
  • P2: KPI Grid Density. KPI strips collapse from 6-col → 3-col (tablet) → 2-col (phone) with proportionally scaled fonts and padding.
  • P2: Gradient Fade Indicators. Pillar tabs, brand filter, and journey strip show right-edge gradient fade to signal off-screen scrollable content.
  • P3: Space Optimization. Journey strip hidden on ≤480px screens. Map height reduces to 220px on small phones. Leaflet, strategy accordion, and expand sections all scale down gracefully.
v3.3.0 — End-to-End Attribution Automation Apr 17, 2026
  • P0: Probabilistic Timestamp Matching. "Poor Man's DNI" fallback for click-to-call attribution — matches ServiceTitan completed jobs to Google clicks within ±30 min windows when explicit phone/email match fails.
  • P0: Revenue Fallback Chain. All 4 systems (cron, CSV export, dashboard jobs, dashboard invoices) now use consistent revenue → total → totalAmount → invoiceTotal resolution.
  • P1: Native Google Ads REST API. Offline conversions upload via scheduled HTTPS fetch at 2:00 AM CST daily. Bypasses API developer token requirement.
  • P1: SEMrush Vercel Cron. Weekly competitive intelligence refresh now automated via Vercel cron job.
  • P2: Phone Number Infrastructure. 20 static 801/385 tracking numbers deployed per-campaign in ServiceTitan for native call → campaign attribution.
  • P2: Phone Tracking Dashboard. New Demand Engine card surfaces all 20 Utah tracking numbers with campaign assignments sourced from ServiceTitan.
  • P3: Attribution Pipeline Card. New Growth Intelligence card visualizes the full GCLID → ServiceTitan → Google Ads automated flow.
v3.1.4 — Revenue Parity Resolution Apr 15, 2026
  • P0: Revenue Accuracy. ServiceTitan revenue parity mapping fixed to accommodate 0-dollar main invoice totals by iteratively accumulating line-item amounts directly from the API.
  • P1: Stale Data Bug. Resolved UI state locking bug where values evaluated to zero would freeze the dashboard on previous timeframe data rather than correctly clearing and displaying zeros.
v3.1.3 — Date Range Architecture Fix Apr 15, 2026
  • P0: Dynamic Data Fetching. Switched from client-side filtering to dynamic API range parameters so that date drop-downs correctly subset metrics across GA4, Pipeline, and Google Ads modules.
  • P1: Timeouts Hardened. Removing the 365-day bulk static ingestion script also eradicated Vercel timeout errors.
v3.1.2 — Proxy Stability Hardening Apr 15, 2026
  • P0: Upstream 503 Prevention. Decreased client-side chunking concurrency to prevent overwhelming upstream Vercel API and resolve 503 gateway timeouts.
v3.1.0 — UX & Stability Hardening Apr 15, 2026
  • P0: Shimmer Loading UX. KPIs now show skeleton loading transitions while backend processes resolve data fetches.
  • P1: Overview Slimming. Removed noise from first-glance interactions. Consolidated Project Intelligence into a collapsible drawer. Moved Utah Sprint actions to Initiatives tab.
  • P2: Relationship Engine Scaling. Aggregated missing ServiceTitan data lines for River City and Cornerstone within unified booking/abandonment loops.
  • P4: Mobile Flow Hints. Added CSS mask-gradients to horizontal overflow containers (tabs, journey strip) to signal off-screen interaction options on small devices.
  • P5: Accessibility Outlines. Embedded persistent :focus-visible golden halos for keyboard navigation mapping.
  • Info: Content Stamping. Defined "Last Scanned" anchors to set stakeholder expectations regarding data update latency across external intelligence modules.
v3.0.0 — V3 Core Release Apr 4, 2026
  • Architecture: Initial transition to MCP-backed client-side dynamic data execution.
  • Demand Engine: Google Ads integration. Live Cost, Leads, and LSA metrics.
  • Relationship Engine: ServiceTitan ingestion for calls and job match rates.
  • Intelligence: Competitor SOV rendering and keyword opportunity heat-mapping.