skills/psds/chat-summarization/SKILL.md
Summarize public sector chat interactions with citizen context, service delivery tracking, regulatory compliance notes, and structured handoff documentation
npx skillsauth add happy-technologies-llc/happy-servicenow-skills chat-summarizationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill generates structured summaries of public sector chat interactions in ServiceNow. Government chat interactions require special handling for compliance documentation, citizen service tracking, language accessibility, and audit trail requirements that differ from standard commercial customer service.
Key capabilities:
When to use: When a government agent needs to summarize a completed chat session for case documentation, when transferring a citizen to another agent or agency, when supervisors review chat quality and compliance, or when generating interaction analytics for service improvement.
sn_psds_caseworker, sn_psds_supervisor, sn_psds_admin, or chat_agentinteraction, sn_psds_case, sn_psds_service, sys_journal_field, and chat_queue_entry tablesFetch the primary interaction record for the chat session.
Using MCP:
Tool: SN-Read-Record
Parameters:
table_name: interaction
sys_id: [INTERACTION_SYS_ID]
fields: sys_id,number,type,channel,state,opened_at,closed_at,short_description,assigned_to,assignment_group,parent,contact,contact_type,direction,duration,queue,transfer_count,abandon,wrap_up_code,disposition,close_notes
If searching for recent chats by agent:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: channel=chat^assigned_to=[AGENT_SYS_ID]^ORDERBYDESCopened_at
fields: sys_id,number,channel,state,opened_at,closed_at,short_description,contact,parent,duration,transfer_count,disposition
limit: 10
Using REST API:
GET /api/now/table/interaction/{INTERACTION_SYS_ID}?sysparm_fields=sys_id,number,type,channel,state,opened_at,closed_at,short_description,assigned_to,assignment_group,parent,contact,contact_type,direction,duration,queue,transfer_count,disposition,close_notes&sysparm_display_value=true
Pull the chat message history for the interaction.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[INTERACTION_SYS_ID]^element=comments^ORelement=work_notes^ORDERBYsys_created_on
fields: sys_id,element,value,sys_created_on,sys_created_by
limit: 200
For live chat message entries:
Tool: SN-Query-Table
Parameters:
table_name: chat_queue_entry
query: interaction=[INTERACTION_SYS_ID]^ORDERBYsys_created_on
fields: sys_id,message,sender,sys_created_on,type
limit: 200
Using REST API:
GET /api/now/table/sys_journal_field?sysparm_query=element_id=[INTERACTION_SYS_ID]^element=comments^ORelement=work_notes^ORDERBYsys_created_on&sysparm_fields=element,value,sys_created_on,sys_created_by&sysparm_limit=200
GET /api/now/table/chat_queue_entry?sysparm_query=interaction=[INTERACTION_SYS_ID]^ORDERBYsys_created_on&sysparm_fields=message,sender,sys_created_on,type&sysparm_limit=200&sysparm_display_value=true
Get the parent case that the chat interaction is linked to.
Using MCP:
Tool: SN-Read-Record
Parameters:
table_name: sn_psds_case
sys_id: [PARENT_CASE_SYS_ID]
fields: sys_id,number,short_description,state,priority,category,subcategory,contact,service,program,eligibility_status,agency,department,case_type,data_classification
Using REST API:
GET /api/now/table/sn_psds_case/{PARENT_CASE_SYS_ID}?sysparm_fields=sys_id,number,short_description,state,priority,category,service,program,eligibility_status,agency,department,case_type,data_classification&sysparm_display_value=true
Get the citizen's contact information and interaction history.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: customer_contact
query: sys_id=[CONTACT_SYS_ID]
fields: sys_id,name,email,phone,preferred_language,preferred_contact_method,accessibility_needs,city,state
limit: 1
Get prior interaction count for context:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: contact=[CONTACT_SYS_ID]^channel=chat^state=closed_complete^ORDERBYDESCclosed_at
fields: number,short_description,opened_at,closed_at,disposition
limit: 5
Using REST API:
GET /api/now/table/customer_contact/{CONTACT_SYS_ID}?sysparm_fields=sys_id,name,email,phone,preferred_language,preferred_contact_method,accessibility_needs&sysparm_display_value=true
GET /api/now/table/interaction?sysparm_query=contact=[CONTACT_SYS_ID]^channel=chat^state=closed_complete^ORDERBYDESCclosed_at&sysparm_fields=number,short_description,opened_at,closed_at,disposition&sysparm_limit=5&sysparm_display_value=true
Get details about the government service discussed during the chat.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_psds_service
query: sys_id=[SERVICE_SYS_ID]
fields: sys_id,name,description,category,department,agency,eligibility_criteria,service_level
limit: 1
Using REST API:
GET /api/now/table/sn_psds_service/{SERVICE_SYS_ID}?sysparm_fields=sys_id,name,description,category,department,agency,eligibility_criteria,service_level&sysparm_display_value=true
Identify any tasks, emails, or follow-up interactions created during the chat.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=[INTERACTION_SYS_ID]^ORinstanceLIKE[CASE_NUMBER]^ORDERBYDESCsys_created_on
fields: sys_id,subject,type,recipients,sys_created_on
limit: 10
Using REST API:
GET /api/now/table/sys_email?sysparm_query=instance=[INTERACTION_SYS_ID]^ORDERBYDESCsys_created_on&sysparm_fields=subject,type,recipients,sys_created_on&sysparm_limit=10&sysparm_display_value=true
Assemble the chat summary with public sector compliance context:
=== CHAT INTERACTION SUMMARY ===
Interaction: [number]
Channel: Chat | Status: [state]
Started: [opened_at] | Ended: [closed_at] | Duration: [duration]
Agent: [assigned_to] | Queue: [queue]
Transfers: [transfer_count] | Disposition: [disposition]
CITIZEN CONTEXT:
Name: [contact_name]
Location: [city], [state]
Language: [preferred_language]
Accessibility: [accessibility_needs]
Prior Chats: [count] (last: [date])
ASSOCIATED CASE:
Case: [case_number] - [short_description]
Status: [state] | Service: [service_name]
Agency: [agency] | Program: [program]
CONVERSATION SUMMARY:
Topic: [primary topic discussed]
Citizen Inquiry: [what the citizen asked about]
Information Provided: [key information shared with citizen]
Actions Taken: [actions performed during chat]
Outcome: [resolution or next steps agreed upon]
KEY TOPICS DISCUSSED:
1. [topic] - [outcome]
2. [topic] - [outcome]
3. [topic] - [outcome]
SERVICE DELIVERY:
- Service Requested: [service name]
- Eligibility Discussed: [yes/no - details]
- Referrals Made: [agency/department referrals]
- Documents Requested: [documentation needs]
- Follow-up Scheduled: [date/time if applicable]
CITIZEN SENTIMENT:
Initial Tone: [positive/neutral/frustrated]
Resolution Satisfaction: [satisfied/partially satisfied/unsatisfied]
Escalation Required: [yes/no]
COMPLIANCE NOTES:
- PII Exchanged: [yes/no - type]
- Identity Verified: [method used]
- Data Classification: [level]
- Disclosure Restrictions: [if any]
FOLLOW-UP ACTIONS:
1. [action] - Owner: [assignee] - Due: [date]
2. [action] - Owner: [assignee] - Due: [date]
AGENT WRAP-UP:
Wrap-up Code: [code]
Close Notes: [agent's closing remarks]
| Tool | When to Use |
|------|-------------|
| SN-NL-Search | Natural language search (e.g., "find today's chat interactions for benefits inquiries") |
| SN-Query-Table | Structured queries for interactions, cases, messages, and services |
| SN-Read-Record | Retrieve specific interaction or case records by sys_id |
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/now/table/interaction | GET | Chat interaction records |
| /api/now/table/sn_psds_case | GET | Associated case details |
| /api/now/table/sn_psds_service | GET | Government service info |
| /api/now/table/sys_journal_field | GET | Chat messages and notes |
| /api/now/table/chat_queue_entry | GET | Live chat message log |
| /api/now/table/sys_email | GET | Follow-up emails sent |
| /api/now/table/customer_contact | GET | Citizen contact details |
Cause: Chat messages may be stored in a dedicated chat table rather than sys_journal_field.
Solution: Check chat_queue_entry, live_message, or sys_cs_message tables. The storage location depends on the chat platform configuration (Agent Chat, Virtual Agent, or Connect Chat).
Cause: The chat may have been a general inquiry that did not result in case creation.
Solution: Check if the interaction has a parent field populated. If not, the chat was standalone. Generate the summary from the interaction record alone.
Cause: The citizen may be an anonymous or unauthenticated user. Solution: Check if the chat was initiated from a public-facing portal without authentication. Summarize with available information and note that identity was not verified.
Cause: The duration field may not auto-calculate, or the interaction was not properly closed.
Solution: Calculate duration from opened_at and closed_at timestamps. If closed_at is empty, the interaction may still be open or was abandoned.
Scenario: Agent summarizes a completed chat about unemployment benefits eligibility.
Step 1 - Get interaction:
Tool: SN-Read-Record
Parameters:
table_name: interaction
sys_id: abc123def789
fields: sys_id,number,channel,state,opened_at,closed_at,contact,parent,assigned_to,duration,disposition,transfer_count
Generated Summary:
CHAT SUMMARY - INT0078901
Channel: Chat | Duration: 18 minutes
Agent: Sarah Martinez | Transfers: 0
Date: Mar 19, 2026 10:15 - 10:33
CITIZEN: David Park | Sacramento, CA
Language: English | Prior Chats: 2
CASE: PSDS0051234 - Unemployment Benefits Application
Service: Employment Security - UI Benefits
Agency: Employment Development Department
CONVERSATION SUMMARY:
Topic: Unemployment insurance eligibility and application status
Citizen Inquiry: Asked about status of UI claim filed Feb 15
and why payments have not been received.
Information Provided:
- Claim is in adjudication due to employer wage dispute
- Estimated timeline: 2-3 weeks for adjudication
- Citizen can continue to certify weekly while pending
Actions Taken:
- Verified identity via case number and DOB
- Escalated wage dispute documentation to adjudication unit
- Sent confirmation email with reference number
SERVICE DELIVERY:
- Referral: Adjudication Unit (internal escalation)
- Documents Requested: Final pay stub, termination letter
- Follow-up: Automated status update in 7 business days
CITIZEN SENTIMENT:
Initial: Frustrated (no payments for 4 weeks)
Resolution: Partially satisfied (timeline provided, escalated)
FOLLOW-UP ACTIONS:
1. Adjudication unit review - Due: Apr 2, 2026
2. Automated status notification - Scheduled: Mar 26, 2026
Scenario: Citizen contacts government portal about multiple services in a single chat session.
CHAT SUMMARY - INT0079015
Channel: Chat | Duration: 32 minutes
Agent: James Chen | Transfers: 1 (to Housing Dept)
Date: Mar 19, 2026 14:05 - 14:37
CITIZEN: Rosa Martinez | Houston, TX
Language: Spanish (bilingual agent used)
Accessibility: None noted | Prior Chats: 0 (first contact)
CONVERSATION SUMMARY:
Topic 1: Property tax exemption inquiry
- Explained homestead exemption eligibility criteria
- Directed to county tax assessor portal for application
- Provided deadline: April 30, 2026
Topic 2: Emergency housing assistance
- Transferred to Housing Department specialist (14:22)
- Citizen qualified for preliminary screening
- New case created: PSDS0051301
Topic 3: SNAP benefits renewal
- Confirmed renewal deadline: April 15, 2026
- Explained online renewal process via state portal
- Emailed renewal checklist to citizen
SERVICE DELIVERY:
- 3 services discussed across 2 departments
- 1 case created (housing assistance)
- 1 transfer (Housing Department)
- 2 referrals (tax assessor, SNAP portal)
COMPLIANCE:
- Identity verified via case lookup
- PII exchanged: Address, household size
- Spanish language accommodation provided
- All referral links sent via secure chat
FOLLOW-UP:
1. Housing case PSDS0051301 - screening appointment TBD
2. SNAP renewal reminder - automated Mar 31
psds/government-case-summarization - Full government case summariescsm/chat-recommendation - Chat response recommendationscsm/case-summarization - General case summarizationcsm/sentiment-analysis - Customer sentiment analysistesting
Manage supplier onboarding, qualification, performance monitoring, and offboarding with auditable lifecycle controls
tools
Identify emerging risks, prioritize intake signals, and route candidates into formal GRC risk assessment workflows
documentation
Screen inbound documents for completeness, policy risk, and routing readiness before extraction or case workflows
testing
Generate concise task summaries with status, timeline, blockers, SLA risk, and recommended next actions