Chat Summarization
Overview
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:
- Summarize citizen chat conversations with key topics and outcomes documented
- Track service requests and referrals initiated during chat sessions
- Capture citizen sentiment and satisfaction indicators
- Document language and accessibility accommodations provided
- Generate handoff-ready summaries for case escalation or agency transfer
- Produce audit-compliant interaction records with timestamps and agent actions
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.
Prerequisites
- Roles:
sn_psds_caseworker,sn_psds_supervisor,sn_psds_admin, orchat_agent - Access: Read access to
interaction,sn_psds_case,sn_psds_service,sys_journal_field, andchat_queue_entrytables - Plugins: Public Sector Digital Services (com.snc.psds) and Advanced Work Assignment or Agent Chat must be active
- Context: A valid interaction sys_id or case reference for the chat session
Procedure
Step 1: Retrieve Chat Interaction Record
Fetch the primary interaction record for the chat session.
Using MCP:
Tool: SN-Get-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
Step 2: Retrieve Chat Transcript and Messages
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
Step 3: Retrieve Associated Case
Get the parent case that the chat interaction is linked to.
Using MCP:
Tool: SN-Get-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
Step 4: Retrieve Citizen Context
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
Step 5: Retrieve Service Information
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
Step 6: Check for Follow-up Actions
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
Step 7: Build the Chat Summary
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 Usage
MCP Tools Reference
| Tool | When to Use |
|---|---|
SN-Natural-Language-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-Get-Record |
Retrieve specific interaction or case records by sys_id |
REST API Reference
| 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 |
Best Practices
- Redact PII in summaries: Remove or mask sensitive personal information (SSN, full DOB, financial details) from chat summaries unless the recipient is authorized
- Preserve exact timestamps: Government audit requirements demand precise timestamps for all interactions and agent actions
- Document language accommodations: Note when translation services, bilingual agents, or simplified language was used
- Track identity verification: Record the method used to verify citizen identity during the chat
- Note accessibility measures: Document any accommodations provided (screen reader compatibility, large text, etc.)
- Include referral details: When citizens are referred to other agencies, document the referral with contact information and reference numbers
- Capture citizen sentiment: Note the citizen's emotional state and satisfaction level for quality assurance
- Summarize, don't transcribe: Produce concise summaries of chat content rather than full transcripts for operational use
Troubleshooting
"Chat messages not found in journal entries"
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).
"Interaction not linked to a case"
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.
"Contact record shows limited information"
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.
"Duration shows as zero"
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.
Examples
Example 1: Benefits Inquiry Chat Summary
Scenario: Agent summarizes a completed chat about unemployment benefits eligibility.
Step 1 - Get interaction:
Tool: SN-Get-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
Example 2: Multi-Topic Service Inquiry Chat
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
Related Skills
psds/government-case-summarization- Full government case summariescsm/chat-recommendation- Chat response recommendationscsm/case-summarization- General case summarizationcsm/sentiment-analysis- Customer sentiment analysis