← Seal CopilotCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Seal Copilot
Snapshot Sep 30, 2026 · 23:13 UTC · version 1.11.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Suggests how to reallocate marketing budget across paid channels without needing ad-spend data, using Revenue Per Entrance, CR, and AOV from Sealmetrics. Trigger on: \"where should I invest\", \"budget reallocation\", \"channel mix\", \"scale or cut\", \"qué canal escalar\", \"shift budget\", \"media plan\", \"what to scale\", or any allocation question. Always pairs the recommendation with the caveat that ROAS requires real spend from the ad platform.\n",
"included_files": [
{
"relative_path": "examples/output.md",
"size_in_bytes": 1688
}
],
"name": "channel-mix-optimizer",
"skill_md_contents": "---\nname: channel-mix-optimizer\ndescription: >\n Suggests how to reallocate marketing budget across paid channels without\n needing ad-spend data, using Revenue Per Entrance, CR, and AOV from\n Sealmetrics. Trigger on: \"where should I invest\", \"budget reallocation\",\n \"channel mix\", \"scale or cut\", \"qué canal escalar\", \"shift budget\",\n \"media plan\", \"what to scale\", or any allocation question. Always pairs\n the recommendation with the caveat that ROAS requires real spend from the\n ad platform.\nargument-hint: \"[period]\"\nshort-description: 'Reallocate paid budget across channels by revenue per entrance. Use for \"which channel is best\", \"where should I spend\", \"budget allocation\", \"dónde invierto\".'\n---\n\n# Channel Mix Optimizer\n\nBefore writing your answer, read `examples/output.md` in this skill directory\nand match its density, structure and tone. It is the reference for what a good\nrun of this skill looks like.\n\nRecommend budget shifts across paid channels using **Revenue Per Entrance\n(RPE)** as the proxy for ROAS. Budget: ≤10 tool calls.\n\n## Why RPE (and why state the caveat)\n\nSealmetrics has no ad spend. ROAS = revenue / spend is impossible from\nthis data alone. But RPE = revenue / entrances is a leading proxy: at\nsimilar CPCs, the channel with higher RPE has higher ROAS. **Always tell\nthe user that proportional spend is the working assumption and to pull\nreal CPC/CPM from the ad platform to confirm.** Never present RPE as ROAS.\n\n## Step 1 — Map the paid channels\n\n1. `get_top_channels(period=90d)` — full channel list.\n2. `list_channel_rules` — confirm which channels the user classifies as\n paid (Paid Search, Paid Social, Display, Affiliates, Paid Email…).\n\nIf the user has not configured paid vs organic split well, run\n`get_traffic_mediums(period=30d)` and treat `cpc`, `paid`, `display`,\n`paidsocial`, `cpm`, `ppc` as paid by default; say so.\n\n## Step 2 — Channel-level scorecard\n\nFor each paid channel pull (≤4 calls total via the compact `get_top_*`\nwhere possible):\n\n- `get_top_channels(period=this_quarter)` and `get_top_channels(period=last_quarter)`\n — volume + trend. `get_top_channels` has no `compare`; diff the pair yourself.\n- `get_traffic_mediums(period=90d, compare=previous)` — conversions and\n revenue per medium in one call, which is where paid/organic actually splits.\n- AOV per paid channel: `get_conversions(period=90d, utm_medium=<paid medium>)`\n once per medium (≤4 calls). There is no `group_by` on `get_conversions`.\n\nCompute per channel:\n\n| Metric | Formula | Use |\n|---|---|---|\n| Entrances | from get_channels | volume |\n| CR | conversions / entrances | quality |\n| AOV | revenue / conversions | ticket |\n| **RPE** | revenue / entrances | the ranking metric |\n| Trend | RPE this 30d vs previous 30d | momentum |\n\nSite weighted-average RPE is the reference line.\n\n## Step 3 — Campaign-level inside each paid channel\n\nFor the top 2 paid channels by revenue:\n\n`get_campaigns(period=90d, sort_by=revenue, limit=20, utm_medium=<paid>,\ncompare=previous)`\n\nApply per-campaign:\n\n- **Scale candidate** — RPE ≥ 1.3 × channel RPE AND ≥30 conversions AND\n trend ≥ flat.\n- **Cut/optimize candidate** — RPE ≤ 0.5 × channel RPE AND ≥500\n entrances AND ≥30d running.\n- **Maintain** — neither.\n\n## Step 4 — Cross-channel reallocation logic\n\nThe recommendation is **relative**, not absolute. Use the form:\n\n> \"Channel A delivers €X per entrance vs Channel B's €Y. Assuming similar\n> CPC, every euro shifted from B to A should produce ≈ X/Y times more\n> revenue. To confirm, pull CPC from your ads platform and compare\n> CPC×(1/CR_A)×AOV_A vs CPC×(1/CR_B)×AOV_B.\"\n\nNever tell the user \"spend more on Google, less on Meta\" as an absolute —\nbudget decisions need their cost reality. Provide the **ratio** and the\n**verification formula**.\n\n## Output format\n\n1. **Channel scorecard table** (paid channels only): entrances · CR · AOV\n · RPE · RPE vs site avg · 90d trend.\n2. **Top 3 scale candidates** (campaign level): name · entrances · CR ·\n AOV · RPE · why · expected € lift at constant CPC.\n3. **Top 3 cut/optimize candidates:** name · entrances · CR · AOV · RPE ·\n why · what to test first (creative / landing / audience) before cutting.\n4. **Cross-channel ratios:** \"1 € from <weakest paid channel> ≈ K € from\n <strongest paid channel>, assuming equal CPC. Verify CPC on each\n platform before shifting budget.\"\n5. **Caveats line:** state the proportional-CPC assumption and recommend\n pulling spend from the ad platform.\n\n## What you do NOT do\n\n- Do not claim ROAS — repeat: Sealmetrics has no spend data.\n- Do not recommend cutting an upper-funnel channel (display, broad social\n awareness) on RPE alone; last non-direct click undervalues assists — flag it.\n- Do not recommend scaling a campaign with <30 conversions; flag as\n \"directional only\".\n- Do not propose absolute budget numbers; propose ratios and tests.\n\n---\n\nLog the run in `<state-dir>/<site_id>/runs.jsonl` with exactly these fields\nand no others: `ts` (ISO timestamp, UTC), `skill`, `calls` (the number of\nSealmetrics calls you made, counted), `budget` (this skill's documented\nceiling, a number — `10` here), `verdict` (one of `on_track`, `watch`, `act`,\n`kpis_only`, `refused`, `error`, or the score for an audit), `scheduled`\n(boolean), `notes` (one line). The first real audit wrote `calls_used` and a\nfree-text verdict because this footer said \"calls used\" in prose; the field\nnames are the contract. Skip silently if the path is not writable.\n"
}SHA-256 of public snapshot: 01455ca6c7bac9e18093eba68897f41507f23e3e85ef4e55881d018afb64a400