← 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": "Find operational waste — money bleeding through the site itself, not through media spend. Scans for bot traffic tax, zombie pages, broken tracking, dead UTMs, country flood without ROI, stale alerts/webhooks, and unused segments. Trigger on: \"reduce expenses\", \"reducir gastos\", \"where am I wasting money\", \"operational waste\", \"fix the bleeding\", \"audit costs\", \"limpiar mi cuenta\", \"dónde estoy gastando de más\", \"operational audit\", \"tracking waste\". NOT for media-spend optimization (use channel-mix-optimizer for that).\n",
"included_files": [
{
"relative_path": "examples/output.md",
"size_in_bytes": 1851
}
],
"name": "cost-reduction",
"skill_md_contents": "---\nname: cost-reduction\ndescription: >\n Find operational waste — money bleeding through the site itself, not\n through media spend. Scans for bot traffic tax, zombie pages, broken\n tracking, dead UTMs, country flood without ROI, stale alerts/webhooks,\n and unused segments. Trigger on: \"reduce expenses\", \"reducir gastos\",\n \"where am I wasting money\", \"operational waste\", \"fix the bleeding\",\n \"audit costs\", \"limpiar mi cuenta\", \"dónde estoy gastando de más\",\n \"operational audit\", \"tracking waste\". NOT for media-spend optimization\n (use channel-mix-optimizer for that).\nshort-description: 'Find operational waste: bots, zombie pages, dead campaigns, broken tracking. Use for \"reduce costs\", \"what is wasting money\", \"reducir costes\", \"operational audit\".'\n---\n\n# Cost Reduction (Operational Waste)\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\nFind waste Sealmetrics can see **without** ad-spend data: traffic that\ncosts money on the infrastructure side but produces nothing, instrumentation\nthat's broken, and unused features. Budget: ≤12 calls.\n\n> Scope note for the user: this skill targets **operational expenses**\n> (infra, dev time, fraud, tool license use), not **media costs**. For ad\n> spend efficiency, run `channel-mix-optimizer`.\n\n## Patterns scanned (report only those that fire)\n\n### 1. Bot tax\n- Detect: `get_bot_stats(days=30)` and\n `get_suspicious_sessions(min_score=70, limit=50)` — neither takes a\n `period`. An empty `get_bot_stats` means agent analytics is off, not 0%\n bots: say so and skip this pattern. If bot share ≥ 15% of total sessions,\n or one source has bot share ≥ 40%, the cost is real (CDN egress, log\n storage, polluted analytics).\n- Recommend: enable Cloudflare / WAF blocking on top bot sources;\n exclude them from Sealmetrics if they ride a UTM the user controls.\n- Impact: bot sessions × site's per-session infra cost (user must supply\n €/1k sessions; if not, state hours saved in analyst time instead).\n\n### 2. Zombie pages\n- Detect: `get_pages(period=90d, sort_by=entrances, limit=50)`. Flag pages\n with ≥1,000 entrances, 0 conversions, bounce > site average + 15 pts,\n no UTM source (organic dead end).\n- Recommend: redirect to a working page or remove from sitemap; if\n intentionally informational, add an exit-intent CTA.\n- Impact: entrances × site CR × AOV = revenue lost to dead ends.\n\n### 3. Broken tracking (microconversion decay)\n- Detect: `get_microconversions(period=30d, compare=previous)` for each\n type from `list_microconversion_types` (the parameter is `conversion_type`,\n not `type`). Any type with ≥50% drop while\n `get_overview` sessions are flat = instrumentation broken.\n- Recommend: developer must redeploy the missing event; confirm the start\n date by re-running the same call on narrower `start_date`/`end_date`\n windows until the drop is bracketed.\n- Impact: hidden — every dependent analysis (funnel, product-friction)\n has been wrong since the regression. State the date the decay started.\n\n### 4. Dead UTM tax\n- Detect: `get_campaigns(period=90d, sort_by=entrances, limit=50)` and\n `get_terms(period=90d, sort_by=entrances, limit=50)` filtered to paid.\n Flag campaigns/terms with ≥200 entrances and 0 conversions over the\n full 90d — likely paused upstream but still receiving stale clicks\n (cached creatives, app-store redirects, scrapers).\n- Recommend: confirm with the ads platform that the campaign is paused;\n if yes, add the source/term to bot exclusion to stop polluting analytics.\n- Impact: ad budget still being charged for those clicks (user pulls\n spend) + cleaner reports.\n\n### 5. Country flood without ROI\n- Detect: `get_countries(period=90d, sort_by=entrances)`. Flag countries\n with ≥5% of total entrances, 0 conversions in 90d, and bot share <30%\n (so it is not just bots from that geo).\n- Recommend: geo-block in the ads platform; add to Sealmetrics country\n exclusion if available; investigate whether shipping/legal even allows\n selling there.\n- Impact: entrances × per-session infra cost + ads budget.\n\n### 6. Stale alerts and webhooks\n- Detect: `list_alerts` + `get_alert_history(limit=100)` + `get_alert_stats`\n — `get_alert_history` has no `period`; it is paged with `limit` and\n `offset` and filtered with `status`. Alerts firing ≥10 times with no\n follow-up action are noise. `list_webhooks` + `get_webhook_stats` +\n `list_webhook_deliveries` — webhooks with ≥10% failure rate or 0\n deliveries are broken integrations.\n- Recommend: silence noisy alerts (raise threshold or delete), fix or\n delete failing webhooks. Each one is dev time saved.\n- Impact: dev hours/month + reduced alert fatigue.\n\n### 7. Unused segments\n- Detect: `list_segments` — segments not referenced in any saved report\n or alert. Many accounts accumulate dozens of test segments.\n- Recommend: delete or rename. Pure hygiene.\n- Impact: clarity for the team; minor.\n\n### 8. Over-tracking of low-signal microconversions\n- Detect: from `list_microconversion_types`, find types with <10 events\n per 30d. They cost storage and noise but inform nothing.\n- Recommend: remove from tracker.\n- Impact: cleaner schema + lighter pixel payload.\n\n## Output format\n\n1. **Waste scorecard line:** \"Found N patterns firing. Estimated monthly\n saving: €X (variable cost) + Y dev hours/month.\"\n2. **Top 3 wastes, each:** name · evidence (numbers + period) · action ·\n estimated saving (with assumption stated) · how to verify in 30d.\n3. **Remaining patterns** (one line each): \"Bot tax: clean. Zombie pages:\n 2 minor flags.\" — so the user sees the full scan happened.\n4. **Single follow-up question:** name the next operational audit (e.g.\n \"Want me to re-run after you ship the fixes?\").\n\n## What you do NOT do\n\n- Do not estimate ad spend; Sealmetrics has none. State the formula and\n ask the user to plug in their CPC/CPM.\n- Do not recommend deleting a microconversion just because volume is\n low — confirm with the user it is not a high-value rare event (e.g.\n \"demo_request\" is rare but valuable).\n- Do not delete alerts/webhooks for the user; recommend, do not act.\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 — `12` 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: 25df77c117b359fbb989878ca8838becbec28e0b3e70dc92128f1fa37541ab2c