Skip to content

feat(slack+web): daily brief + pitch analyzer + brainstorm portal

isidro requested to merge claude/daily-brief-and-pitch-analyzer-v2 into main

Summary

Two CEO-requested features shipped in sequence:

A · Daily Brief (Slack)

  • notify_daily_brief — idempotent per UTC calendar day (new last_daily_brief_date state field).
  • Aggregates: approvals pending, 24h campaign activity + spend delta, top p7+ trends, active experiments, readiness status.
  • Wired into run_notifier so the scheduler posts automatically once/day.
  • CLI: cmoagent slack daily-brief [--force] [--dry-run].
  • Slash: /cmo daily [force].

B · Pitch Analyzer (Slack + Web + CLI)

  • pitch_analyzer.py with PitchRequest / PitchAnalysis / PitchVerdict immutable dataclasses.
  • Two planners: deterministic heuristic (no deps) + Claude-backed (falls back on any failure).
  • Pulls last 30 days of market_signals and keyword-filters them before scoring.
  • Verdict = green / amber / red + 0..1 success probability + niche fit + opportunity cost + opportunities/risks/next steps + rationale.
  • Slack: /cmo pitch <title> [:: <concept>].
  • CLI: uv run python -m agents.gaming_cmo pitch \"<title>\" --concept ....
  • Web: POST /api/pitch/analyze + /brainstorm/ portal (form + result panel + trend context).

Test plan

  • 288/288 tests pass (44 new covering daily brief dedup, force override, aggregation math, pitch scoring, saturation handling, trend context integration, Slack rendering).
  • CLI smoke test: offline pitch analysis returns structured verdict.
  • Verify /brainstorm portal renders and posts to /api/pitch/analyze once deployed.
  • Confirm /cmo daily posts and /cmo pitch works in #cmo-agent channel post-deploy.

Merge request reports