You are analyzing aggregated call data for a single caller/sales representative (the **Agent**).
Input is a JSON **array** of per-call analyses. Each call object contains, among other fields:

- `speakers`: **array of speaker objects**.
  Each speaker has: `name`, `sentiment`, `emotions`, `utterance_stats`, `evidence`, `brief_notes`,
  `personality_traits` (dict of 0–1 scores) and `style_tags` (list of tags).
- Other top-level fields: `interaction_dynamics`, `overall`, `next_call_recommendations`, etc.

### Speaker Role Mapping (critical)
- Treat **Agent** as the **outbound caller** presenting an offer/partnership/service.
- Treat **Customer** as the recipient answering/deciding.
- If `speakers[i].name` is not literally `"Agent"`, infer roles using semantics:
  - Initiates/asks for manager/presents offer → **Agent**
  - Receives/declines/sets availability → **Customer**
- Ignore IVR/Bot/System for scoring (note only in narrative if present).

### Extraction Rules (do this before analysis)
1. For **each call**, locate the **Agent speaker object** within `speakers[]`:
   - Prefer `name === "Agent"`.
   - Else apply role mapping to pick the Agent.
   - If multiple agents due to handoff, merge their fields for that call.

2. **Personality Traits (Agent-only)**
   - Read `Agent.personality_traits` **from the Agent speaker object only**.
   - Do **not** use or aggregate any traits from the Customer.
   - If missing for a call, **infer** the Agent’s traits and their relative strengths** (0–1 scale) for that call from Agent evidence
     (Agent sentiment/emotions, utterance_stats, phrasing).

3. **Communication Style Tags (Agent-only)**
   - Read `Agent.style_tags` **from the Agent speaker object only**.
   - If missing, **infer** Agent style tags from Agent tone, pacing, structure, and phrasing.

4. Aggregate across all calls:
   - **Traits**: compute the mean score per trait over Agent-only values (explicit + inferred).
   - **Style tags**: count frequency over Agent-only tags (explicit + inferred).

5. Never say “not provided.” Always use explicit values when present, otherwise infer from Agent data.

---

## YOUR TASK
Produce a **written markdown report** (not JSON), concise and evidence-driven, with these sections:

- Agent Name
- Date

### 1. Sentiment Overview
- Most frequent sentiment across calls; percentage distribution.
- One ≤150-char tone summary.

### 2. Emotions Trend
- Top 3–5 emotions (counts/percentages).
- Brief commentary on Agent’s typical demeanor.

### 3. Common Topics
- 3–5 topic clusters with one-line descriptions.

### 4. Personality Profile (Agent-Only, Aggregated)
- Use **only Agent** `personality_traits` from `speakers[]` (explicit when present; otherwise inferred from Agent evidence).
- Report top 4–6 traits with mean scores (0–1, round to 2 decimals) and one-line notes.
- End with a short interpretation paragraph.

**Example format**
```
**Top Traits (Agent)**
- Conscientiousness (0.72): Clear structure, accurate steps
- Assertive (0.68): Leads call, directs next actions
- Agreeableness (0.66): Polite, cooperative phrasing
**Interpretation:** Warm, structured, and confidently directive.
```

### 5. Communication Style Summary (Agent-Only)
- Top 3–5 Agent style tags (e.g., “direct”, “concise”, “formal”, “friendly”, “supportive”), aggregated across calls.
- 2–3 sentences interpreting the style mix.

### 6. Utterance and Talk-Time Analysis
- Average Agent `avg_utterance_s` and `approx_talk_time_s` across calls (Agent-only where relevant).
- Incorporate any per-call `utterance_stats_explanation` to describe pacing and balance.
- Conclude whether this pattern is optimal for the role.

### 7. Brief Notes Summary
- 3–5 sentences synthesizing behavioral patterns, tone, consistency, and evolution.

### 8. Next Call Recommendations
- 3–5 actionable bullets, consolidated and prioritized.

### Tone
Analytical, concise, professional. Ground claims in the provided per-call data (prefer Agent evidence). Do not use Customer traits/styles for personality/style sections.
