Weight Profiles¶
Weight profiles control how different types of email interactions are weighted in analysis algorithms.
Overview¶
Email messages have different recipient types:
- TO: Direct recipients - the primary audience
- CC: Carbon copy - informed but not primary
- BCC: Blind carbon copy - hidden recipients
Different analysis goals require different weightings of these recipient types.
Built-in Profiles¶
Influence Profile¶
Purpose: Identify actors with organizational influence.
Rationale: Direct (TO) communication indicates stronger relationships. Being addressed directly suggests importance, while CC indicates awareness without direct engagement.
Use cases:
- Finding key decision-makers
- Identifying informal leaders
- Understanding reporting relationships
Information Flow Profile¶
Purpose: Track how information spreads through the organization.
Rationale: All recipients receive the information equally, regardless of addressing type. The spread of information doesn't depend on whether someone was TO'd or CC'd.
Use cases:
- Studying information dissemination
- Identifying information hubs
- Tracking news/announcement propagation
Coordination Profile¶
Purpose: Identify actors who coordinate activities across groups.
Rationale: CC recipients are often stakeholders being kept informed of coordination activities. Direct recipients may be task-oriented while CC'd parties are coordinators.
Use cases:
- Finding project coordinators
- Identifying cross-functional connectors
- Understanding coordination patterns
Using Profiles¶
Command Line¶
# Use influence profile (default)
commgraph analyze centrality --profile=influence
# Use information flow profile
commgraph analyze centrality --profile=information_flow
# Use coordination profile
commgraph analyze centrality --profile=coordination
Configuration File¶
How Weights Are Applied¶
When building the communication graph, each interaction's edge weight is multiplied by the profile weight:
For centrality algorithms like PageRank, these weighted edges determine how "influence" flows through the network.
Example¶
Consider a message from Alice to Bob (TO) and Carol (CC):
With influence profile:
- Alice → Bob: weight = 1.0 × 1.0 = 1.0
- Alice → Carol: weight = 1.0 × 0.5 = 0.5
With information_flow profile:
- Alice → Bob: weight = 1.0 × 1.0 = 1.0
- Alice → Carol: weight = 1.0 × 1.0 = 1.0
With coordination profile:
- Alice → Bob: weight = 1.0 × 0.5 = 0.5
- Alice → Carol: weight = 1.0 × 1.0 = 1.0
Choosing a Profile¶
| If you want to find... | Use profile |
|---|---|
| Key influencers and decision-makers | influence |
| Information hubs and broadcasters | information_flow |
| Coordinators and project managers | coordination |
Impact on Results¶
The choice of profile can significantly affect results:
Example: Executive Assistant¶
An executive assistant who is often CC'd on executive communications:
- influence profile: Lower ranking (CC has lower weight)
- coordination profile: Higher ranking (CC has higher weight)
- information_flow: Moderate ranking (all weights equal)
Example: Project Manager¶
A project manager who CC's many stakeholders:
- influence profile: Moderate (their TO recipients score high)
- coordination profile: High (their CC recipients score high)
- information_flow: High (all communication counts equally)
Advanced: Custom Profiles¶
For programmatic use, you can define custom weight profiles:
import "github.com/grokify/commgraph/analysis"
profile := &analysis.WeightProfile{
Name: "custom",
ToWeight: 1.0,
CCWeight: 0.75,
BCCWeight: 0.1,
}
results, err := analysis.Centrality(store, &analysis.CentralityOptions{
Algorithm: analysis.PageRank,
Profile: profile,
})
Best Practices¶
-
Start with influence: The default profile works well for most organizational analysis.
-
Compare profiles: Run analysis with different profiles to see how results change.
-
Consider context: Choose the profile that matches your analysis question.
-
Document your choice: When sharing results, note which profile was used.