# Lifesight Channel Deep Dive

> Use when the user wants to go deep on ONE channel — saturation, marginal ROI, response curve, headroom, or a what-if: "should I increase TikTok", "where's the headroom on Meta", "is Linear TV saturated", "what happens if I cut Google by 20%", "how efficient is this channel really". The analyst's home spoke — tightest data guardrails. Routed to from the `lifesight` router after the workspace is calibrated.

- Skill: `lifesight/lifesight-channel-deep-dive` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lifesight/lifesight-channel-deep-dive`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lifesight/lifesight-channel-deep-dive/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: lifesight (https://skillmd.com/u/lifesight)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lifesight/lifesight-channel-deep-dive

---


# Lifesight Channel Deep-Dive

Everything that matters about one channel: where it sits on its response curve, what
the next dollar returns, and what a change would do. **The whole game is marginal,
not average** — a channel with a great average ROAS can be a terrible place to add
the next dollar.

**Prerequisites (router handles):** workspace calibrated, profile loaded. Operate
under `lifesight-core`; present under `lifesight-rendering`. Load both.

**Analyst guardrail.** This spoke serves the heaviest-data persona, who is most
exposed to the `query_ad_data` flood. Apply `lifesight-core` Rule 3 strictly: prefer
`ask_mia` (it summarizes); if you must pull rows, scope hard (one channel, bounded
window, aggregated). Never widen a deep-dive into a full-table dump.

## Flow

1. **Confirm the one channel** (and the metric/question — saturation? marginal ROI?
   a specific what-if?). One channel at a time; if they name several, do the most
   important first and offer the rest.
2. **One heavy call.** Pull the channel's curve / marginal economics / what-if via
   `ask_mia`. Walk its gates if it asks (`lifesight-core` Rule 4).
3. **Interpret against the curve**, not in isolation.

## Judgment checks (mandatory)

- **Marginal, not average.** Lead with the return on the *next* dollar and where the
  channel sits vs its saturation knee — not the blended ROAS.
- **Platform vs causal.** State whether the efficiency figure is platform-reported or
  causal iROAS. A "scale it" call on a sub-1.0 *platform* number needs the causal read.
- **Saturation ≠ headroom for a weak channel.** "Room in the curve" only matters if
  the channel is efficient there. A channel below the `iroas_floor` is not a growth
  opportunity just because it isn't saturated.
- **What-ifs ride the curve.** A "+20% spend" answer must reflect diminishing returns,
  not linear extrapolation. Respect profile guardrails (floor, caps, locked channels).

## Output shape

1. **Where it sits** — current spend, saturation %, and the marginal return on the
   next dollar, in plain language.
2. **The read** — efficient with headroom / efficient but saturating / inefficient —
   and what that means.
3. **The move** — scale, hold, or cut, with the specific what-if if asked
   ("+20% → ~X incremental revenue at Y marginal ROAS").
4. **Validation option** — if it's a big bet, suggest a geo-lift test to confirm causally.

Clean channel name, causal language, signed/formatted numbers.

## Next steps to offer

"Optimize across all channels" (→ budget-optimization) · "Compare to [another
channel]" · "Run a geo-lift test to validate" · "Check what moved here recently"
(→ anomaly-watch).

## Red flags — STOP

- Leading with average ROAS instead of marginal return
- Calling a sub-floor channel "headroom / scale it"
- A what-if that extrapolates linearly instead of along the response curve
- Widening the deep-dive into a multi-channel raw data pull → scope it (Rule 3)
- Quoting a platform number as causal without naming the basis

