Customer Report (360)
Build a comprehensive report on a single client by pulling structured data from Twenty CRM and conversational context from Gmail, Slack, Notion, Granola, and LinkedIn.
MCP connectors
| Connector |
Purpose |
| CRM |
Pull customer data and deal history |
| Notion |
Read project notes and meeting logs |
| LinkedIn (TalkToHumans) |
Search contacts, pull DM history and connection status |
When to use
- "Everything we know about [client]"
- Pre-meeting brief
- Account health check
- Renewal or upsell prep
Data sources
| Source |
What to pull |
| Twenty CRM |
Company record, contacts, deal stage, ARR, contract dates, tags |
| LinkedIn (TalkToHumans) |
Connection status, last DM date, conversation highlights, pending invitations |
| Gmail |
Last 10 threads with the client domain - key topics, tone, open asks |
| Slack |
Mentions of the client name in relevant channels - support issues, internal notes |
| Granola |
Meeting transcripts with the client in last 90 days - decisions, commitments, sentiment |
| Notion |
Any client-specific pages or project boards |
Process
- Identify the client - resolve the name to a CRM record; confirm if ambiguous
- Pull CRM data - company, contacts, deal, contract, ARR, tags
- Pull LinkedIn data (TalkToHumans) - search contacts, pull DM history, connection status
- Pull email threads - summarize last 10 threads, flag open asks
- Pull Slack mentions - summarize relevant messages, flag unresolved issues
- Pull meeting notes - summarize last 3 meetings, extract commitments
- Pull Notion pages - link any client-specific docs
- Reconcile - flag contacts in LinkedIn/Gmail/Slack not in CRM, flag stage mismatches, flag commitments without tasks
- Synthesize - identify patterns, risks, opportunities
- Output the report using the template below
Output template
# [Client Name] - 360 Report
Generated: YYYY-MM-DD
## Quick facts
- **Stage**: [deal stage]
- **ARR**: [amount]
- **Contract**: [start] to [end]
- **Primary contact**: [name, role]
- **Health**: [green/yellow/red] - [one-line reason]
## Recent activity (last 90 days)
- LinkedIn: connection status, last DM <date>, conversation summary
- Gmail: <N> threads, last inbound <date>, last outbound <date>
- Slack: <N> mentions, channel: #<name> if any
- Granola: <N> meetings, most recent <date> with <attendees>
## Timeline (last 90 days)
- [date] - [event summary]
- ...
## Open items
- [ ] [item from email/Slack/meetings]
- ...
## Internal context
[What we've discussed internally about this client - from Slack and Notion]
## Recommended next step
[One clear action with owner and deadline]
Guardrails
- Read-only - never modify CRM records, send emails, or post messages
- Flag data gaps - if a source returns nothing, say so explicitly
- No speculation - report what the data shows; flag inferences clearly
- Respect PII - the report is internal-only; still avoid unnecessary personal details
- Ask for confirmation if the client name is ambiguous or matches multiple records
Self-improvement
After the CAO reviews a customer report:
- Diff what was drafted vs what the CAO found useful vs what she cut - identify patterns
- Update
customer-success/_insights.md with what sections added value and which were noise
- If the CAO consistently skips a data source or section, note it (may not be worth pulling)
- If she adds context the report missed, add that source or check to the Data sources table
- If a report format works well for a specific use case (e.g. pre-meeting vs renewal), save it to
customer-success/_examples/ as a reference template
1---2name: customer-report3description: Customer Report (360)4---5# Customer Report (360)67Build a comprehensive report on a single client by pulling structured data from Twenty CRM and conversational context from Gmail, Slack, Notion, Granola, and LinkedIn.89## MCP connectors1011| Connector | Purpose |12|-----------|---------|13| CRM | Pull customer data and deal history |14| Notion | Read project notes and meeting logs |15| LinkedIn (TalkToHumans) | Search contacts, pull DM history and connection status |1617## When to use1819- "Everything we know about [client]"20- Pre-meeting brief21- Account health check22- Renewal or upsell prep2324## Data sources2526| Source | What to pull |27|--------|-------------|28| **Twenty CRM** | Company record, contacts, deal stage, ARR, contract dates, tags |29| **LinkedIn (TalkToHumans)** | Connection status, last DM date, conversation highlights, pending invitations |30| **Gmail** | Last 10 threads with the client domain - key topics, tone, open asks |31| **Slack** | Mentions of the client name in relevant channels - support issues, internal notes |32| **Granola** | Meeting transcripts with the client in last 90 days - decisions, commitments, sentiment |33| **Notion** | Any client-specific pages or project boards |3435## Process36371. **Identify the client** - resolve the name to a CRM record; confirm if ambiguous382. **Pull CRM data** - company, contacts, deal, contract, ARR, tags393. **Pull LinkedIn data (TalkToHumans)** - search contacts, pull DM history, connection status404. **Pull email threads** - summarize last 10 threads, flag open asks415. **Pull Slack mentions** - summarize relevant messages, flag unresolved issues426. **Pull meeting notes** - summarize last 3 meetings, extract commitments437. **Pull Notion pages** - link any client-specific docs448. **Reconcile** - flag contacts in LinkedIn/Gmail/Slack not in CRM, flag stage mismatches, flag commitments without tasks459. **Synthesize** - identify patterns, risks, opportunities4610. **Output the report** using the template below4748## Output template4950```markdown51# [Client Name] - 360 Report52Generated: YYYY-MM-DD5354## Quick facts55- **Stage**: [deal stage]56- **ARR**: [amount]57- **Contract**: [start] to [end]58- **Primary contact**: [name, role]59- **Health**: [green/yellow/red] - [one-line reason]6061## Recent activity (last 90 days)62- LinkedIn: connection status, last DM <date>, conversation summary63- Gmail: <N> threads, last inbound <date>, last outbound <date>64- Slack: <N> mentions, channel: #<name> if any65- Granola: <N> meetings, most recent <date> with <attendees>6667## Timeline (last 90 days)68- [date] - [event summary]69- ...7071## Open items72- [ ] [item from email/Slack/meetings]73- ...7475## Internal context76[What we've discussed internally about this client - from Slack and Notion]7778## Recommended next step79[One clear action with owner and deadline]80```8182## Guardrails8384- **Read-only** - never modify CRM records, send emails, or post messages85- **Flag data gaps** - if a source returns nothing, say so explicitly86- **No speculation** - report what the data shows; flag inferences clearly87- **Respect PII** - the report is internal-only; still avoid unnecessary personal details88- **Ask for confirmation** if the client name is ambiguous or matches multiple records8990## Self-improvement9192After the CAO reviews a customer report:93941. Diff what was drafted vs what the CAO found useful vs what she cut - identify patterns952. Update `customer-success/_insights.md` with what sections added value and which were noise963. If the CAO consistently skips a data source or section, note it (may not be worth pulling)974. If she adds context the report missed, add that source or check to the Data sources table985. If a report format works well for a specific use case (e.g. pre-meeting vs renewal), save it to `customer-success/_examples/` as a reference template