Documentation
Alerts catalog
Deterministic quality and risk alerts — codes, severity, defaults.
Alerts are evaluated by pure rules in@chatalyze/metrics (evaluateSessionAlerts,evaluateFloorAlerts). AI labels never invent alert codes.
| Code | Severity | Signal (defaults) |
|---|---|---|
idle_chatter | warn | No outbound while active — default idle 12 min |
sla_first_reply | warn /crit | First reply > 300s SLA; crit at2× |
fan_wait_long | warn | Awaiting reply > 480s (8m) |
off_platform | crit | Outbound matches TG/WhatsApp/CashApp/Venmo/“text me” patterns |
price_floor | warn | PPV price < $3 |
ppv_too_early | info/warn | First PPV before 4 speaker turns |
monologue | warn | Streak ≥5 chatter msgs or chatter share ≥0.7 on ≥10 msgs |
copy_paste_loop | warn | ≥3 near-duplicate outbounds (min 20 chars) |
no_cta_long_thread | info | ≥10 turns, zero CTA/PPV |
ghost_risk | info | ≥10m silence after sell attempt |
Lifecycle
- Live compute — open sessions re-evaluated on GET
- Durable —
rm_alertsafter intelligence run / AlertRaised - Status:
open→acked→resolved - Ack:
POST /api/alerts/:id/ackwith admin token
API
GET /api/alerts?status=open|acked|resolved|all
POST /api/alerts/:id/ack # Bearer ADMIN_TOKENMerge rule: durable rows win over live (preserves ack). Dedupe key:scope:code:YYYYMMDDHH.