Risk scoring: from rules to 150+ patterns
How Howzer's risk analyzer evolved from simple keyword rules to a multi-signal pattern engine.
By Howzer Team, Engineering
Why risk scoring matters
Not every customer message is equally urgent. A billing question is different from a threat to cancel. A factual complaint is different from an emotionally charged escalation. Risk scoring gives teams a way to prioritize without reading every message first.
The evolution
When we shipped v2.1, risk scoring was keyword-based: specific words and phrases mapped to risk levels. It worked for obvious cases ("I want to cancel", "legal action") but missed subtlety. Sarcasm, indirect threats, and multi-sentence escalation patterns slipped through.
v2.1: keyword matching
- Simple keyword-to-risk mapping.
- Works for explicit language ("cancel", "refund", "lawyer").
- Misses indirect patterns and context-dependent signals.
- No distinction between mentioning a topic and expressing intent.
v2.2: multi-signal scoring
- Combined keyword signals with sentiment score.
- Added escalation pattern detection (repeated contacts, increasing negativity).
- Calibrated scoring thresholds separately for German and English.
- Reduced false positives on informational messages.
v2.3-DE: pattern engine
The current version uses 40+ pattern categories and 150+ rules. Patterns combine multiple signals: sentiment, emotion, root cause, customer history, and message structure. A message that says "I've contacted you three times about this" triggers an escalation pattern even if the language is polite, because the history signal matters more than the tone.
- Multi-signal patterns: sentiment × emotion × history × content.
- Escalation detection: repeated contact, increasing negativity over time.
- Churn indicators: cancellation language, competitor mentions, ultimatums.
- Regulatory risk: legal language, complaint authority mentions, GDPR references.
- Tier classification: low → medium → high → critical with configurable thresholds.