Skip to main content
kreel Home
Request beta access
← All prompts
Reporting

portfolio_pulse

Cross-brand health check across your whole book of clients.

Arguments

Template

Give me a portfolio pulse for {date_range}.

1. Call `get_portfolio` with date_range={date_range}, sort_by='revenue_delta', compare_to_previous=True. This groups every brand you can reach by workspace and ranks each group by revenue_delta_pct (biggest decline first), so the brands needing attention surface at the top - there is no `brand` argument, it always covers your whole reach in one call.
2. For each flagged brand - revenue_delta_pct or mer moved against it by more than 20%, or mer is 0 alongside non-zero ad_spend (spend with zero attributed revenue - a possible tracking gap, not necessarily a real zero; mer null just means no spend) - call `get_performance` with that brand's `id` passed as `brand` (platform='all', entity_type='account', compare_to_previous=True) over the SAME window you gave get_portfolio: convert {date_range} to get_performance's dict form, e.g. '30d' becomes date_range={{"days": 30}}. Drilling into a different window than the one that flagged the brand would attribute the change to the wrong period.
3. Before reporting on any brand whose `data_through` looks stale (more than a day or two behind today), call `get_brand_context` on it and disclose the staleness instead of trusting its numbers.

Render: one headline per workspace group, a table of flagged brands (name, revenue, revenue_delta_pct, mer, data_through), the channel-level driver behind each flagged brand from get_performance, and any brand whose connection looks stale. get_portfolio never sums revenue across brands (different base currencies, timezones, and revenue bases) - report each brand's figures individually, never a combined total.

Claude Code

Available in the @kreel/skills plugin as:

/kreel:portfolio-pulse <date_range>