Acacia x Playbook Partner Hub
Acacia x Playbook
Partner Hub Live

Rev. Dr. Allan Irizarry-Graves · Strategy Dashboard

Partnership Intelligence.
Live. No Login.

Single-pane view for bi-weekly strategy calls. Contracts, earnings, pipeline — always current.


Key Metrics · YTD 2026

YTD Acacia

50/50 Phase 1 split

YTD Playbook

Matched 50/50

Royalty Churches

Phase 2 active

Pipeline Value

Weighted expected


Visual Overview

Monthly Revenue by Church

Acacia vs Playbook Share

Pipeline Status


Church Portfolio

Active partnerships · Phase tracking


Pipeline · Leads in Motion


Partnership Drive

MOUs, SOWs, scoping forms — auto-organized


Acacia Strategies x Community Playbook

Last refreshed: Loading... · Next: St. Mark Foundation PO

lesliebjames.com →
+ Number(n).toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 0 }); } function parseNum(val) { if (val === '' || val === null || val === undefined) return 0; return parseFloat(String(val).replace(/[$,]/g, '')) || 0; } function phaseProgress(phase, status) { var p = String(phase).toLowerCase(); var s = String(status).toLowerCase(); if (s.indexOf('pending') > -1) return 15; if (s.indexOf('proposal') > -1) return 25; if (p.indexOf('2') > -1) return 70; if (s.indexOf('active') > -1) return 50; return 30; } function statusBadge(status) { var s = String(status).toLowerCase(); var cls = 'badge-indigo'; if (s.indexOf('active') > -1 || s.indexOf('royalty') > -1) cls = 'badge-green'; else if (s.indexOf('proposal') > -1 || s.indexOf('sent') > -1) cls = 'badge-amber'; else if (s.indexOf('pending') > -1 || s.indexOf('contract') > -1) cls = 'badge-purple'; else if (s.indexOf('hot') > -1 || s.indexOf('cohort') > -1) cls = 'badge-green'; return '' + status + ''; } function buildCharts(portfolio, pipeline) { var active = []; for (var i = 0; i < portfolio.length; i++) { if (portfolio[i][4] && parseNum(portfolio[i][4]) > 0) active.push(portfolio[i]); } var names = active.map(function(r) { return String(r[0]).split(' ').slice(0,2).join(' '); }); var revenues = active.map(function(r) { return parseNum(r[4]); }); if (revenueChart) revenueChart.destroy(); revenueChart = new Chart(document.getElementById('chart-revenue'), { type: 'bar', data: { labels: names, datasets: [{ label: 'Monthly Revenue', data: revenues, backgroundColor: revenues.map(function(_, i) { return COLORS[i % COLORS.length] + 'cc'; }), borderColor: revenues.map(function(_, i) { return COLORS[i % COLORS.length]; }), borderWidth: 1, borderRadius: 6 }] }, options: { responsive: true, plugins: { legend: { display: false } }, scales: { x: { grid: { color: 'rgba(255,255,255,.04)' }, ticks: { font: { size: 10 } } }, y: { grid: { color: 'rgba(255,255,255,.04)' }, ticks: { callback: function(v) { return '