Periodic sales performance review composite. Pulls rep-level and team-level sales data from any CRM or tracking system, analyzes performance across a user-defined period (weekly, monthly, quarterly), and produces both an executive summary and a detailed diagnostic. Covers quota attainment, activity metrics, deal progression, win/loss patterns, rep-level benchmarking, coaching opportunities, and forecast accuracy. Tool-agnostic — works with any CRM (Salesforce, HubSpot, Pipedrive, Close, Supabase, CSV).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
The command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
File Explorer
2 files
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview
name
periodic-sales-performance-review
version
1.0.0
description
Periodic sales performance review composite. Pulls rep-level and team-level sales data from any CRM or tracking system, analyzes performance across a user-defined period (weekly, monthly, quarterly), and produces both an executive summary and a detailed diagnostic. Covers quota attainment, activity metrics, deal progression, win/loss patterns, rep-level benchmarking, coaching opportunities, and forecast accuracy. Tool-agnostic — works with any CRM (Salesforce, HubSpot, Pipedrive, Close, Supabase, CSV).
tags
["research"]
graph
{"provides":["sales-performance-executive-summary","sales-performance-detailed-report","rep-coaching-priorities","forecast-accuracy-analysis"],"requires":["deal-data","activity-data","your-company-context"],"connects_to":[{"skill":"pipeline-review","when":"Review surfaces pipeline health concerns requiring deeper diagnostic","passes":"deal-data, pipeline-stages"},{"skill":"sales-coaching","when":"Review identifies reps needing coaching on specific skills","passes":"rep-coaching-priorities"},{"skill":"cold-email-outreach","when":"Review reveals reps with low activity or stalled pipeline needing re-engagement","passes":"stalled-leads, underperforming-segments"},{"skill":"sequence-performance","when":"Review shows outbound campaigns underperforming for specific reps","passes":"campaign-ids, rep-campaign-metrics"}],"capabilities":["data-analysis","reporting"]}
Periodic Sales Performance Review
Pulls rep-level and team-level sales data from whatever system the user tracks performance in, analyzes it over a chosen period, and produces a report that answers the questions a sales leader actually cares about: Are we going to hit the number? Who's carrying the team? Who needs help? Where are the coaching opportunities? Are our forecasts reliable?
Two output modes:
Executive summary: 1-page snapshot. Quota attainment, top/bottom performers, red flags, green lights. What a VP Sales reads before the Monday standup.
Detailed diagnostic: Full rep-by-rep breakdown, activity analysis, deal progression, win/loss patterns, forecast accuracy, and coaching recommendations.
Both are always produced. The executive summary sits at the top of the report.
When to Auto-Load
Load this composite when:
User says "sales performance review", "team performance report", "how's the team doing", "rep scorecard"
Do you track forecasts? (commit, best case, pipeline)
Forecast accuracy analysis
tracks_forecasts
Where are forecasts recorded?
Pull forecast data
forecast_source
What forecast categories do you use?
Map to standard categories
forecast_categories
Store config in:clients/<client-name>/config/periodic-sales-performance-review.json or equivalent.
Step 1: Pull Performance Data
Purpose: Extract deal data, activity data, and (optionally) forecast data for the specified period.
Input Contract
period: {
type: "weekly" | "monthly" | "quarterly" | "custom"
start_date: string # ISO date (auto-calculated from type, or user-specified)
end_date: string # ISO date (default: today)
comparison_period: boolean # Include prior period for trend comparison (default: true)
}
crm_tool: string # From config
access_method: string # From config
activity_source: string # From config
rep_names: string[] # From config
Process
Pull three categories of data:
A) Deal Data (per rep)
CRM
How to Pull
Salesforce
SOQL query on Opportunity with Owner filter
HubSpot
Deals API filtered by owner
Pipedrive
Deals API filtered by owner
Close
Leads/Opportunities API by assigned user
Supabase
Query deals table with rep filter
CSV
User provides file, filter by owner column
For each rep, pull:
All deals closed (won + lost) in the period
All deals created in the period
All deals currently open (active pipeline)
Deal amounts, stages, close dates, sources, loss reasons
B) Activity Data (per rep)
Source
How to Pull
Salesforce
Tasks + Events objects by owner
HubSpot
Engagements API by owner
Outreach/Salesloft
Activity metrics API
Gong
Call logs and meeting data
Manual/CSV
User provides activity log
For each rep, pull:
Calls made (count, duration if available)
Emails sent (count, reply rate if available)
Meetings held (count, no-shows if available)
Proposals/demos delivered
LinkedIn touches (if tracked)
C) Forecast Data (if tracked)
Pull the forecast submitted at the start of the period for comparison to actuals:
## Performance Data Pulled
Source: [CRM name]
Activity source: [Activity tool name]
Current period: [start] to [end]
Comparison period: [start] to [end]
Reps found: [list of rep names]
Deals closed in period: X won, Y lost
Activity data available: [yes/partial/no]
Forecast data available: [yes/no]
Data looks correct? (Y/n)
Step 2: Analyze Performance
Purpose: Run the full analysis across six dimensions. Pure computation + LLM reasoning.
Input Contract
performance_data: { ... } # From Step 1
rep_quotas: { ... } # From config
team_target: number # From config
activity_targets: { ... } | null # From config
pipeline_stages: string[] # From config
expected_cycle_days: integer # From config
Analysis Dimensions
Run all six analyses on the current period data. Where comparison period exists, calculate period-over-period trends.
Analysis 1: Quota Attainment
Questions answered: Are we going to hit the number? Who's on track and who isn't?
Metric
How to Calculate
Team revenue closed
Sum of all reps' closed won
Team attainment
Team revenue / team target
Rep attainment
Each rep's closed won / their quota
Attainment distribution
How many reps at >100%, 80-100%, 50-80%, <50%
Run rate projection
(Revenue closed / days elapsed) × days in period
Gap to target
Team target - closed won - weighted pipeline
Rep ranking
Ordered by attainment %
vs. Prior period
Compare attainment percentages
Output:
quota_attainment: {
team: {
target: number
closed: number
attainment_pct: percentage
run_rate_projection: number
projected_attainment_pct: percentage
gap_to_target: number
vs_prior_period: percentage_change | null
}
by_rep: [
{
name: string
team: string | null
quota: number
closed: number
attainment_pct: percentage
run_rate_projection: number
gap_to_quota: number
rank: integer
vs_prior_period: percentage_change | null
status: "crushing" | "on_track" | "behind" | "at_risk"
}
]
distribution: {
above_100: integer
pct_80_to_100: integer
pct_50_to_80: integer
below_50: integer
}
}
Status thresholds (adjusted for time elapsed in period):
Crushing: >110% attainment (pace-adjusted)
On track: 90-110% attainment (pace-adjusted)
Behind: 60-90% attainment (pace-adjusted)
At risk: <60% attainment (pace-adjusted)
Analysis 2: Activity Metrics
Questions answered: Are reps putting in the work? Who's active and who's coasting?
Metric
How to Calculate
Calls per day (by rep)
Total calls / business days in period
Emails per day (by rep)
Total emails / business days in period
Meetings per week (by rep)
Total meetings / weeks in period
Proposals sent (by rep)
Count in period
Activity-to-meeting conversion
Meetings booked / (calls + emails)
Meeting-to-opportunity conversion
Qualified deals / meetings held
No-show rate
No-shows / meetings booked
vs. Targets
Compare to activity_targets
vs. Prior period
Compare activity volumes
Activity efficiency
Revenue closed per activity unit (calls, emails, meetings)
No human checkpoint after this step — the analysis feeds directly into report generation.
Step 3: Generate Report
Purpose: Transform the raw analysis into two report formats: an executive summary and a detailed diagnostic with rep-level coaching notes. Pure LLM reasoning.
Input Contract
analysis: { ... } # From Step 2
rep_quotas: { ... } # From config
team_target: number # From config
activity_targets: { ... } | null # From config
Executive Summary Format
One page. Numbers and rankings. What a VP Sales needs to see in 60 seconds.
# Sales Performance Review — [Period Type]: [Start Date] to [End Date]
## Team Snapshot
| Metric | This Period | Prior Period | Change |
|--------|------------|-------------|--------|
| Revenue closed | $X | $Y | +/-Z% |
| Team attainment | X% | Y% | +/-Z pts |
| Deals won | X | Y | +/-Z |
| Avg deal size | $X | $Y | +/-Z% |
| Win rate | X% | Y% | +/-Z pts |
| Avg days to close | X | Y | +/-Z |
| Pipeline coverage | Xx | Yx | +/-Z |
## Rep Attainment Leaderboard
| Rank | Rep | Closed | Quota | Attainment | Status |
|------|-----|--------|-------|------------|--------|
| 1 | [Name] | $X | $Y | Z% | Crushing |
| 2 | [Name] | $X | $Y | Z% | On track |
| ... | ... | ... | ... | ... | ... |
## Red Flags
- [Any rep below 50% attainment — names and specifics]
- [Activity metrics below target]
- [Pipeline coverage below 2x for any rep]
- [Win rate declining]
- [Forecast accuracy deteriorating]
## Green Lights
- [Reps exceeding quota]
- [Metrics trending up]
- [Pipeline coverage healthy]
- [Wins against key competitors]
## Top 3 Actions
1. [Most impactful thing to do this week — e.g., "Coach [rep] on discovery — 8 meetings but 0 qualified deals"]
2. [Second most impactful]
3. [Third most impactful]
Detailed Diagnostic Format
Full rep-by-rep breakdown with coaching recommendations.
# Sales Performance Diagnostic — [Period]
## 1. Quota Attainment
[Team attainment summary]
[Rep-by-rep attainment table]
[Run rate projections]
[Gap analysis — what's needed to hit the number]
[Commentary: are we going to make it? What needs to happen?]
## 2. Activity Analysis
[Team activity averages vs. targets]
[Rep-by-rep activity table]
[Efficiency metrics — revenue per meeting, conversion rates]
[Commentary: who's doing the work? Who's efficient vs. just busy?]
## 3. Deal Progression & Velocity
[Pipeline creation and coverage by rep]
[Velocity metrics — avg days to close, stage duration]
[Stalled deals by rep]
[Commentary: is the pipeline healthy? Where are bottlenecks?]
## 4. Win/Loss Analysis
[Team win rate and trends]
[Rep-by-rep win rates]
[Loss reasons — team-level and rep-level patterns]
[Competitive loss analysis]
[Commentary: why are we losing? Any rep-specific patterns?]
## 5. Rep Scorecards
[For each rep, a mini-scorecard]:
### [Rep Name] — [Status: Crushing / On Track / Behind / At Risk]
| Metric | Value | vs. Target | vs. Team Avg | Trend |
|--------|-------|-----------|-------------|-------|
| Attainment | X% | [+/-] | [+/-] | [up/down/flat] |
| Activity | [grade] | [+/-] | [+/-] | [up/down/flat] |
| Win rate | X% | — | [+/-] | [up/down/flat] |
| Avg deal size | $X | — | [+/-] | [up/down/flat] |
| Pipeline coverage | Xx | [+/-] | [+/-] | [up/down/flat] |
**Strengths:** [What this rep does well, with data]
**Gaps:** [Where they need improvement, with data]
**Coaching recommendation:** [Specific action for their manager]
## 6. Forecast Accuracy (if available)
[Team forecast accuracy]
[Rep-by-rep accuracy table]
[Patterns: who sandbags, who over-commits]
[Commentary: can we trust the forecast?]
## 7. Recommendations
[Numbered list of specific, actionable recommendations.
Each recommendation cites the data point that drives it.]
### Urgent (This Week)
1. [Action — data point — expected impact]
### High Priority (This Month)
2. [Action — data point — expected impact]
3. [Action — data point — expected impact]
### Systemic (Ongoing)
4. [Process or tooling change — data point — expected impact]
Recommendations Logic
Generate recommendations based on patterns found in the analysis:
Pattern
Recommendation
>50% of reps below 80% attainment
"This is a systemic issue, not individual. Review: targets too high? Market shifted? Product gaps? Pipeline generation insufficient?"
One rep significantly underperforming
"[Rep] is at X% attainment with [specific gap]. Schedule a 1:1 this week to [specific coaching action]."
Team activity below targets
"Activity is X% below target across the team. Re-establish daily rhythm: [specific cadence]. Consider shared accountability (leaderboard, daily standups)."
High activity + low conversion
"Activity volume is there but conversion is low. This is a skills issue, not an effort issue. Focus coaching on [discovery/closing/qualification] — the bottleneck is at [stage]."
Win rate declining period-over-period
"Win rate dropped from X% to Y%. Top new loss reason: [Z]. Investigate: competitor move? Product gap? Positioning drift?"
Pipeline coverage <2x for multiple reps
"X reps have <2x pipeline coverage. They will not hit quota without immediate pipeline generation. Activate [outbound/referral/event] campaigns this week."
Present the executive summary first, then offer the detailed diagnostic:
[Executive Summary rendered]
---
Full detailed diagnostic is also available with:
- Rep-by-rep scorecards with strengths, gaps, and coaching recommendations
- Deal-level analysis (progression, stalled deals, velocity)
- Win/loss deep dive with competitive analysis
- Forecast accuracy breakdown
Coaching priorities this period:
| Rep | Priority | Gap | Recommended Action |
|-----|----------|-----|--------------------|
| ... | ... | ... | ... |
Want to see the full diagnostic? Or drill into a specific rep's scorecard?
Step 4: Export & Share (Optional)
Purpose: Save the report and optionally push it to the user's preferred location.
Process
Based on user preference:
Destination
How
Markdown file
Save to clients/<client>/reports/sales-performance-review-{date}.md
Google Sheets
Export data tables (attainment, activity, win/loss)
Notion
Push to a Notion database page via Notion MCP
Slack
Send executive summary to a channel
Email
Send via agentmail
stdout
Just display it (default)
Execution Summary
Step
Tool Dependency
Human Checkpoint
Typical Time
0. Config
None
First run only
5 min (once)
1. Pull Data
Configurable (CRM API, CSV, Supabase, etc.)
Verify data looks correct
2-3 min
2. Analyze
None (computation + LLM reasoning)
None — feeds directly to report
Automatic
3. Generate Report
None (LLM reasoning)
Review executive summary, drill into reps
10-15 min
4. Export
Configurable (file, Sheets, Notion, etc.)
Optional
1 min
Total human review time: ~15-20 minutes for a full sales performance review that would normally take 1-2 hours of CRM digging and spreadsheet building.
Adapting to Data Availability
Not every team tracks every metric. The analysis degrades gracefully:
The report depth automatically scales with the period length. A weekly review emphasizes activity and deal movement. A quarterly review emphasizes attainment trends, coaching ROI, and forecast reliability.
Tips
Run this on a consistent cadence. The value compounds. A monthly review reveals trends. A quarterly review reveals who's improving and who's plateauing. Without consistency, you're always flying blind.
Don't just look at quota attainment. A rep hitting quota through one large deal is different from a rep hitting quota through consistent execution. The underlying metrics tell you who is sustainably performing.
Activity metrics without conversion context are useless. "Jordan made 500 calls" sounds impressive until you see 0 meetings booked. Always pair activity with outcomes.
The coaching section is the ROI. The numbers tell you WHAT is happening. The coaching priorities tell you WHAT TO DO about it. A performance review without coaching actions is just a report card.
Watch for the "middle" reps. Top performers and bottom performers get attention. The reps at 70-90% attainment often have the highest coaching ROI — they're close enough that fixing one skill gap puts them over the line.
Forecast accuracy is a team discipline, not individual talent. If everyone's forecasts are off, it's a process problem. Implement deal inspection criteria: "What has to be true for this deal to close this period?"
Compare rep performance within segments, not across them. An SMB AE closing $40K/month and an Enterprise AE closing $40K/month are having very different quarters. Always normalize for role and territory.
Use the trend data. A rep at 60% attainment who was at 40% last month is improving. A rep at 90% who was at 120% last month is declining. Trajectory matters more than a single snapshot.