# Generate Talking Points

> Generate manager talking points for employee reviews, 1:1 meetings, and performance discussions based on talent profiles, goals, feedback, and performance metrics

- Skill: `happy-technologies-llc/generate-talking-points` (Agent Skill)
- Install (CLI): `npx skillmds@latest add happy-technologies-llc/generate-talking-points`
- Raw SKILL.md: https://api.skillmd.com/api/skills/happy-technologies-llc/generate-talking-points/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Happy-Technologies-LLC (https://skillmd.com/u/happy-technologies-llc)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/happy-technologies-llc/generate-talking-points

---


# Generate Manager Talking Points

## Overview

This skill produces structured talking points for managers preparing for employee performance discussions. It covers:

- Pulling employee talent profiles with skills, competencies, and career aspirations
- Aggregating goal progress data including completion rates and milestone tracking
- Collecting peer feedback, self-assessments, and prior review ratings
- Synthesizing performance metrics into actionable discussion topics
- Generating conversation frameworks for reviews, 1:1s, and development planning sessions

**When to use:**
- Before annual or mid-year performance reviews
- Preparing for regular 1:1 meetings with direct reports
- When onboarding as a new manager and needing team context
- During talent calibration sessions requiring evidence-based discussion
- Before career development conversations or promotion discussions

## Prerequisites

- **Roles:** `sn_hr_talent.manager`, `sn_hr_core.manager`, `sn_hr_talent.admin`, or `admin`
- **Plugins:** `com.sn_hr_talent` (Talent Management), `com.sn_hr_core` (HR Core)
- **Access:** Read access to sn_hr_talent_profile, sn_hr_talent_goal, sn_hr_talent_review, sn_hr_talent_feedback tables
- **Knowledge:** Understanding of your organization's performance rating scale, competency framework, and review cycle cadence

## Key Talent Tables

| Table | Purpose | Key Fields |
|-------|---------|------------|
| `sn_hr_talent_profile` | Employee talent profiles | user, skills, competencies, career_interests, potential_rating, risk_of_loss, last_review_date |
| `sn_hr_talent_goal` | Employee goals and objectives | user, short_description, category, status, percent_complete, due_date, weight, metric_value |
| `sn_hr_talent_review` | Performance review records | user, review_cycle, overall_rating, reviewer, state, comments, review_date |
| `sn_hr_talent_feedback` | Peer and manager feedback | user, feedback_type, provider, content, rating, created_on |
| `sys_user` | Employee profile | name, title, department, manager, location, date_joined |

## Procedure

### Step 1: Retrieve Employee Talent Profile

Query the employee's talent profile for skills, competencies, and career data.

**Using MCP (Claude Code/Desktop):**
```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_profile
  query: user=[employee_sys_id]
  fields: sys_id,user,skills,competencies,career_interests,potential_rating,risk_of_loss,strengths,development_areas,last_review_date,current_role_tenure
  limit: 1
```

**Using REST API:**
```bash
GET /api/now/table/sn_hr_talent_profile?sysparm_query=user=[employee_sys_id]&sysparm_fields=sys_id,user,skills,competencies,career_interests,potential_rating,risk_of_loss,strengths,development_areas,last_review_date&sysparm_limit=1&sysparm_display_value=true
```

### Step 2: Gather Goal Progress

Query the employee's current goals and completion status.

**Using MCP:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_goal
  query: user=[employee_sys_id]^active=true^ORDERBYDESCdue_date
  fields: sys_id,short_description,category,status,percent_complete,due_date,weight,metric_value,metric_target,comments,created_on
  limit: 20
```

**Using REST API:**
```bash
GET /api/now/table/sn_hr_talent_goal?sysparm_query=user=[employee_sys_id]^active=true^ORDERBYDESCdue_date&sysparm_fields=sys_id,short_description,category,status,percent_complete,due_date,weight,metric_value,metric_target,comments&sysparm_limit=20&sysparm_display_value=true
```

### Step 3: Collect Feedback and Reviews

Pull peer feedback and prior review ratings.

**Using MCP:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_feedback
  query: user=[employee_sys_id]^ORDERBYDESCsys_created_on
  fields: sys_id,feedback_type,provider,content,rating,sys_created_on
  limit: 20
```

**Using REST API:**
```bash
GET /api/now/table/sn_hr_talent_feedback?sysparm_query=user=[employee_sys_id]^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,feedback_type,provider,content,rating,sys_created_on&sysparm_limit=20&sysparm_display_value=true
```

**Pull prior review history:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_review
  query: user=[employee_sys_id]^ORDERBYDESCreview_date
  fields: sys_id,review_cycle,overall_rating,reviewer,state,comments,review_date,strengths_noted,areas_for_improvement
  limit: 5
```

### Step 4: Generate Talking Points

**Build structured talking points from aggregated data:**
```
Tool: SN-Execute-Background-Script
Parameters:
  script: |
    var empSysId = '[employee_sys_id]'; // Replace with target employee
    var talkingPoints = {
      generated_date: new GlideDateTime().toString(),
      employee: {},
      goal_summary: { total: 0, on_track: 0, at_risk: 0, completed: 0, avg_completion: 0 },
      strengths: [],
      development_areas: [],
      feedback_themes: { positive: [], constructive: [] },
      review_history: [],
      discussion_topics: [],
      suggested_questions: []
    };

    // Employee info
    var user = new GlideRecord('sys_user');
    user.get(empSysId);
    talkingPoints.employee = {
      name: user.name.toString(),
      title: user.title.toString(),
      department: user.department.getDisplayValue(),
      manager: user.manager.getDisplayValue(),
      tenure: user.date_joined ? gs.dateDiff(user.date_joined.toString(), new GlideDateTime().toString(), true) + ' days' : 'Unknown'
    };

    // Goal progress
    var goals = new GlideRecord('sn_hr_talent_goal');
    goals.addQuery('user', empSysId);
    goals.addQuery('active', true);
    goals.query();
    var completionTotal = 0;
    while (goals.next()) {
      talkingPoints.goal_summary.total++;
      var pct = parseInt(goals.percent_complete.toString()) || 0;
      completionTotal += pct;
      if (pct >= 100) talkingPoints.goal_summary.completed++;
      else if (pct >= 50) talkingPoints.goal_summary.on_track++;
      else talkingPoints.goal_summary.at_risk++;
    }
    if (talkingPoints.goal_summary.total > 0) {
      talkingPoints.goal_summary.avg_completion = Math.round(completionTotal / talkingPoints.goal_summary.total);
    }

    // Talent profile
    var profile = new GlideRecord('sn_hr_talent_profile');
    profile.addQuery('user', empSysId);
    profile.query();
    if (profile.next()) {
      talkingPoints.strengths = profile.strengths.toString().split(',').map(function(s) { return s.trim(); }).filter(Boolean);
      talkingPoints.development_areas = profile.development_areas.toString().split(',').map(function(s) { return s.trim(); }).filter(Boolean);
    }

    // Feedback themes
    var fb = new GlideRecord('sn_hr_talent_feedback');
    fb.addQuery('user', empSysId);
    fb.addQuery('sys_created_on', '>=', gs.monthsAgo(6));
    fb.query();
    while (fb.next()) {
      var content = fb.content.toString().substring(0, 200);
      var rating = parseInt(fb.rating.toString()) || 3;
      if (rating >= 4) talkingPoints.feedback_themes.positive.push(content);
      else if (rating <= 2) talkingPoints.feedback_themes.constructive.push(content);
    }

    // Review history
    var review = new GlideRecord('sn_hr_talent_review');
    review.addQuery('user', empSysId);
    review.orderByDesc('review_date');
    review.setLimit(3);
    review.query();
    while (review.next()) {
      talkingPoints.review_history.push({
        cycle: review.review_cycle.getDisplayValue(),
        rating: review.overall_rating.getDisplayValue(),
        date: review.review_date.toString()
      });
    }

    // Generate discussion topics based on data
    if (talkingPoints.goal_summary.at_risk > 0)
      talkingPoints.discussion_topics.push('Address ' + talkingPoints.goal_summary.at_risk + ' at-risk goals and identify blockers');
    if (talkingPoints.goal_summary.completed > 0)
      talkingPoints.discussion_topics.push('Recognize completion of ' + talkingPoints.goal_summary.completed + ' goals');
    if (talkingPoints.development_areas.length > 0)
      talkingPoints.discussion_topics.push('Review progress on development areas: ' + talkingPoints.development_areas.join(', '));
    if (talkingPoints.feedback_themes.constructive.length > 0)
      talkingPoints.discussion_topics.push('Discuss constructive feedback themes (' + talkingPoints.feedback_themes.constructive.length + ' items)');

    // Suggested questions
    talkingPoints.suggested_questions = [
      'What accomplishments are you most proud of this period?',
      'What obstacles are slowing your progress on current goals?',
      'How can I better support your development in [development_area]?',
      'Where do you see yourself in the next 12-18 months?',
      'What skills would you like to develop next?'
    ];

    gs.info('MANAGER TALKING POINTS:\n' + JSON.stringify(talkingPoints, null, 2));
  description: "Talent: Generate manager talking points for performance discussion"
```

### Step 5: Search for Context by Theme

**Using an encoded query for additional context:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_feedback
  query: user.nameLIKE[employee_name]^rating>=4^123TEXTQUERY321=leadership collaboration^sys_created_on>=javascript:gs.daysAgoStart(90)
  limit: 10
```

## Tool Usage

| Operation | MCP Tool | REST Endpoint |
|-----------|----------|---------------|
| Query Talent Profile | SN-Query-Table | GET /api/now/table/sn_hr_talent_profile |
| Query Goals | SN-Query-Table | GET /api/now/table/sn_hr_talent_goal |
| Query Feedback | SN-Query-Table | GET /api/now/table/sn_hr_talent_feedback |
| Query Reviews | SN-Query-Table | GET /api/now/table/sn_hr_talent_review |
| Search by Theme | SN-Natural-Language-Search | N/A |
| Generate Summary | SN-Execute-Background-Script | POST /api/now/table/sys_trigger |
| Schema Discovery | SN-Discover-Table-Schema | GET /api/now/table/sys_dictionary |

## Best Practices

- **Data Privacy:** Never share raw peer feedback verbatim with the employee; synthesize into themes to protect contributor confidentiality
- **Balanced View:** Always include both strengths and development areas to avoid recency bias or halo effect
- **Goal Alignment:** Frame goal discussions in context of team and organizational objectives
- **Evidence-Based:** Ground every talking point in specific data (goal metrics, feedback quotes, review ratings) rather than impressions
- **Forward-Looking:** Dedicate at least 40% of talking points to future development, not just backward-looking performance assessment
- **Calibration Context:** Before reviews, check how the employee's ratings compare to team and department averages
- **Cultural Sensitivity:** Adapt talking point tone and structure to organizational culture and individual communication preferences
- **Follow-Up Tracking:** Document agreed-upon action items from the discussion as new goals or tasks

## Troubleshooting

### Talent Profile Returns No Data

**Symptom:** Query returns no talent profile for a known employee
**Cause:** Talent profiles may not be auto-created; they require manager or HR action to initialize
**Solution:** Check if the employee has an HR profile in `sn_hr_core_profile` instead. Some organizations use a different profile table or the talent module may not be fully deployed.

### Goal Completion Percentages Are All Zero

**Symptom:** All goals show 0% completion even though progress has been made
**Cause:** Goal tracking may use milestone-based completion rather than percentage, or updates are tracked in a related task table
**Solution:** Check for a `sn_hr_talent_goal_task` or `sn_hr_talent_milestone` table that feeds completion. Query `sys_db_object` with `nameLIKEgoal` for related tables.

### Feedback Content Is Encrypted or Restricted

**Symptom:** Feedback content field returns empty or encoded values
**Cause:** HR feedback may be protected by field-level encryption or ACLs restricting manager access
**Solution:** Verify the querying user has `sn_hr_talent.manager` role. Check if encryption is applied via `sys_dictionary` encryption attribute on the content field.

## Examples

### Example 1: Annual Review Preparation

**Scenario:** Manager preparing for annual performance review

```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_goal
  query: user=[employee_sys_id]^active=true^due_dateONThis year@javascript:gs.beginningOfThisYear()@javascript:gs.endOfThisYear()
  fields: short_description,status,percent_complete,weight,metric_value,metric_target
  limit: 15
```

**Generated Talking Points:**
- **Opening:** "Thank you for your contributions this year. Let us review your progress and plan ahead."
- **Goal Progress:** 8 goals set, 5 completed (63%), 2 on track, 1 at risk (Q4 revenue target at 35%)
- **Strengths (from feedback):** Consistently recognized for cross-team collaboration and technical mentorship
- **Development Areas:** Presentation skills (noted in 3 feedback entries), delegation (self-identified)
- **Rating Context:** Last review: Exceeds Expectations. Current trajectory: Meets/Exceeds
- **Discussion Questions:** "The Q4 revenue goal is behind; what support do you need to close the gap?"
- **Development Plan:** Recommend public speaking workshop; consider stretch assignment leading next all-hands

### Example 2: Weekly 1:1 Quick Prep

**Scenario:** Manager needs a quick context refresh before a 30-minute 1:1

```
Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_talent_feedback
  query: user.nameLIKE[employee_name]^sys_created_on>=javascript:gs.daysAgoStart(14)
  limit: 5
```

**Generated Quick Notes:**
- **Goal Check-in:** API migration project at 70% (was 55% last week); on track for March deadline
- **Recent Feedback:** Positive note from QA lead about improved test coverage documentation
- **Open Item from Last 1:1:** Employee requested training budget for cloud certification
- **Suggested Opener:** "Great progress on the API migration. How is the new testing approach working out?"

## Related Skills

- `hrsd/case-summarization` - HR case context for performance discussions
- `hrsd/sentiment-analysis` - Employee sentiment analysis
- `hrsd/resume-skill-extraction` - Skills inventory for development planning
- `hrsd/persona-assistant` - HR persona-based assistance
- `admin/workflow-creation` - Automate review cycle workflows

