/* Page: Portfolio (multi-client overview) */ function PortfolioView({ onOpenClient }) { const { data, loading, error } = useApi('/api/clients', []); if (loading) return
Loading portfolio...
; if (error) return
Failed to load portfolio: {error}
; const clients = data || []; const totals = clients.reduce((a, c) => ({ sessions: a.sessions + c.sessions, conv: a.conv + c.conv, top10: a.top10 + c.top10, }), { sessions: 0, conv: 0, top10: 0 }); const sortedSessions = [...clients].sort((a,b) => b.sessions - a.sessions); return ( <>
01 — Agency portfolio

Eight clients. Four compounding. Two need attention this week.

Roll-up of organic performance across all SEO retainers. Filter by tier, sort by movement, drill into any client.
Clients 8 +1 this quarter GE PH · Active retainers
Organic sessions · 30d {(totals.sessions/1000).toFixed(0)}k +14.2% MoM GA4 · roll-up
Conversions · 30d {totals.conv.toLocaleString()} +18.6% MoM GA4 · key events
Top-10 keywords {totals.top10} +35 Semrush · tracked
At-risk accounts 2 Isla Verde, Cebu GE PH · health rules
Client book
{sortedSessions.map(c => ( onOpenClient(c.id)} style={{cursor: 'pointer'}}> ))}
Client Tier Sources Sessions · 30d vs prev Conversions Visibility Top-10 KW Health
{c.initials}
{c.name} {c.url}
{c.tier}
{['ga4','gsc','ahrefs','semrush'].map(s => ( {s.toUpperCase()} ))}
{c.sessions.toLocaleString()} = 0 ? 'up' : 'down'}`}> = 0 ? 'arrowUp' : 'arrowDown'} size={10}/> {c.sessionsDelta >= 0 ? '+' : ''}{c.sessionsDelta.toFixed(1)}% {c.conv} = 0 ? 'up' : 'down'}`}> {c.convDelta >= 0 ? '+' : ''}{c.convDelta.toFixed(1)}%
{c.visibility.toFixed(1)}%
{c.top10} = 0 ? 'var(--accent)' : 'var(--red)'}}> {c.top10Delta >= 0 ? '+' : ''}{c.top10Delta} {c.health === 'ok' ? 'On track' : c.health === 'warn' ? 'Watch' : 'At risk'}

This week's priorities

Isla Verde — sessions down 4.2%
Cluster cannibalisation across /resorts/ and /destinations/. Audit scheduled.
Cebu Clinics — Ahrefs disconnected
Backlink data stale. Reconnect token in Integrations.
Pampanga Foods — top-10 +8
Launchpad gaining traction. Promote to Engine review next month.

Roll-up · top movers

Last 7 days
{[ { kw: 'karate near makati', client: 'Karate Nation', from: 12, to: 7 }, { kw: 'best resorts palawan', client: 'Isla Verde', from: 18, to: 11 }, { kw: 'family lawyer manila', client: 'Manila Legal', from: 9, to: 5 }, { kw: 'sourdough delivery makati', client: 'Binondo Bakery', from: 14, to: 9 }, ].map((m, i) => (
{m.kw}
{m.client}
{m.from} {m.to}
))}

Tier distribution

`${v} client${v === 1 ? '' : 's'}`}/>
Forecast · Q3 2026

Two Launchpad clients on track to graduate to Engine by August. Capacity opens for one new Full Stack engagement in Q4.

); } window.PortfolioView = PortfolioView;