Skip to content

v0.9.5 β€” πŸ“Š EWMA City Pulse, AI Transparency & Feed Integration

Choose a tag to compare

@jctots jctots released this 23 Jun 11:56

What's New

πŸ“ˆ EWMA-based status & trend detection

Replaced the 7-day rolling average with Exponential Weighted Moving Average (Ξ±=0.3) for both status classification and trend detection. Long-running alerts naturally fade into the baseline, eliminating the cross-hour comparison problem. Works from the first pulse β€” no 7-day warm-up needed.

πŸ”— Pulse references & AI transparency

  • LLM returns the top 3 alerts that most influenced the summary β€” shown as clickable deep links with source icons in the pulse overlay
  • Always-visible AI disclaimer toggle: "AI-generated summary Β· verify before acting β†’ Click for sources & methodology"
  • Collapsible section reveals referenced alerts, EWMA methodology explanation, and How it works link

πŸ“‹ City Pulse feed card

City Pulse now appears as a pinned card at the top of the alert feed β€” same layout as other alerts with summary title, timestamp, and green ONGOING pill. Click resets the map to default view and opens the pulse overlay. Works on both desktop and mobile.

πŸ€– Deterministic pipeline improvements

  • travel_ok, category statuses, and trends are all script-computed β€” the LLM only writes the summary and recommendation
  • get_city_pulse MCP tool for programmatic access
  • Prompt rewrite: synthesis hierarchy, spatial awareness, no alarmist tone, 300-char limit

πŸ› Bug fixes

  • Duplicate pulse notifications β€” pulse was sent every 10 minutes for the full hour due to missing dedup; now tracks last_pulse_at per subscriber and sends only once
  • Stale pulse at hour mark β€” dispatch could send the previous hour's pulse before the new one was generated; now verifies generated_at matches the current hour
  • Pulse references not rendering β€” window.alerts was undefined because alerts are let-scoped; fixed to use direct variable references
  • Strike dark theme missing for filter pill and card hover states

🎨 UI polish

  • Two-line centered disclaimer with dotted underline clickable affordance
  • Mobile UX: city view toggle, pulse auto-show, fade animation
  • Dark theme consistency across all components