File size: 1,557 Bytes
9ea5e05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Class-aware length bands grounded in your research synthesis (response: 50–125; CTR: 100–200; balanced ~100). :contentReference[oaicite:1]{index=1}
CLASS_BANDS = {
  "internal_request": {"ideal": (40,100), "good": (20,150), "subj": (30,60)},  # Lowered for concise emails
  "follow_up":        {"ideal": (60,110), "good": (40,160), "subj": (28,55)},
  "outreach":         {"ideal": (90,150), "good": (60,210), "subj": (30,60)},
  "promo":            {"ideal": (100,180),"good": (80,220), "subj": (30,60)},
  "transactional":    {"ideal": (60,100), "good": (40,150), "subj": (25,55)},
  "support":          {"ideal": (80,140), "good": (50,200), "subj": (28,55)},
}

# Weights (0–10 scale). Higher for clarity & spam per findings; strong but secondary for length, tone, grammar, personalization. :contentReference[oaicite:2]{index=2}
DEFAULT_WEIGHT_PRESETS = {
  "research_defaults": {
    "clarity": 9.0,               # clarity/actionability shows largest lift in comprehension & perceived quality
    "length": 7.5,                # concise bands improve response; class-aware bands applied
    "spam_score": 8.5,            # content triggers accumulate, hurting deliverability
    "personalization": 7.5,       # medium level best; avoid heavy
    "tone": 7.5,                  # greeting/sign-off, caps/exclaim/emoji discipline, polite markers
    "grammatical_hygiene": 7.0    # typos/grammos reduce perceived writer quality
  }
}

# Spam tier weights (marketing-y phrases only; no profanity)
SPAM_TIER_WEIGHTS = {"A": 0.6, "B": 0.35, "C": 0.2}