Linguistic Features
12+ quantitative features extracted from your chat history. All computed locally with pure Python β no API calls.
Message Shape
Length Distribution
Mean, median, and percentiles (p25, p50, p75, p90). Captures if you write terse replies or long explanations.
Bubble Bursts
How often you send multiple messages in a row vs. one long message. Measured as bubbles per turn.
Punctuation Habits
Frequency of ellipsis, exclamation marks, question marks, tildes. Plus how often you skip end punctuation.
Expressiveness
Emoji Frequency
Unicode emoji per turn, plus top emoji ranked by count. Includes WeChat-specific faces like [ε²η].
Laughter Tokens
Detects εε, ε΅ε΅, 233, lol, lmao, hhh patterns. Quantifies how often you laugh in text.
Language
Code-Switching Ratio
Percentage of Latin words vs. CJK characters. Reveals EN/ZH mixing patterns and language dominance.
Catchphrases
Most-used phrases extracted via word/n-gram frequency. Surfaces your unique verbal tics.
Openers & Closers
First and last words of each turn. Reveals greeting patterns, conversation starters, sign-offs.
Temporal & Contextual
Active Hours
Time-of-day message distribution (UTC). Shows when you typically chat.
Per-Contact Tone
Average message length by contact. Longer + more formal with some people, shorter + casual with others.
Feature β Prompt Mapping
Linguistic features are translated into LLM instructions in the persona prompt: