Support Console Input/Output Skill
First Pass
- Read the task prompt and
payloads/answer_template.jsonbefore deciding fields. The templates differ across ticket, mobile, and enterprise tasks. - Use the base URL provided by the current task or harness. Confirm with
/healthif needed, then use/api/catalogto understand available support-console records. - Work only from the current input payload and API records. Do not infer from the customer wording alone when a ticket/case/incident id is available.
- Return only JSON matching the template. Preserve requested ordering: ticket payload order for ticket batches, ascending
case_idfor case queues/worklists, and requirement order for share-permission users.
API Lookup SOP
Ticket tasks:
- Fetch
/api/tickets/<ticket_id>for service area, service type, account id, and subscribed speed. - Fetch
/api/outages?service_area=<service_area>and apply only active outages whoseservice_typesinclude the ticket service type. - Fetch
/api/diagnostics/<ticket_id>and/api/troubleshooting/<ticket_id>for non-outage, eligible tickets.
Mobile case tasks:
- Fetch
/api/cases/<case_id>to getcustomer_id,line_id,device_id,issue_type, and location. - Fetch
/api/lines/<line_id>,/api/devices/<device_id>, and/api/plans/<plan_id>. - When a task asks for bill recovery, use the permitted bill source exposed by the task/API and copy the exact bill id and amount. Do not invent bill amounts.
Enterprise export tasks:
- Fetch
/api/enterprise/incidents/<incident_id>. - Fetch
/api/enterprise/export-runs?incident_id=<incident_id>. - Search
/api/enterprise/messages?query=<text>with narrow terms from the client, product, incident, failure code, owner, and alert/root-cause words. - Fetch
/api/enterprise/sla/<enterprise_account_id>after the incident reveals the enterprise account.
Ticket Classification Rules
Apply blockers before diagnostics:
- Active outage: set
PENDING_ACTION, no diagnostic required/needed, routeOUTAGE_WAITwhen that field exists, and copyoutage_id. Count it as customer wait. - Invalid account or no matching account: set
FAILED, blocker/routeINVALID_ACCOUNT, no diagnostic. - Account hold, overdue suspension, fraud suspension, or other ineligible account state: set
FAILED, no diagnostic. If the template has onlyresolution_route, useINELIGIBLE_ACCOUNTfor account holds/suspensions. If the template haskey_blocker, use the specific enum such asOVERDUE_SUSPENSIONorFRAUD_SUSPENSION; overdue billing handoff routes toACCOUNTS_PAYABLE. - Authentication never recovered or auth failure evidence: set
FAILED, blocker/routeAUTH_FAILED, no diagnostic.
For eligible non-outage tickets, use diagnostics and troubleshooting:
CONFIGURATION_DRIFT, stale voice profile, or similar profile/provisioning refresh that troubleshooting fixes:RESOLVED, route/teamNONE,resolution_routeAUTO_TROUBLESHOOTING, diagnostic true.VOICE_PROFILE_STALE: usuallyRESOLVEDafterVOICE_PROFILE_REFRESH.FIBER_DROP_DAMAGE,SIGNAL_LOSS, or physical line faults:ESCALATED, teamFIELD_OPS, blockerPHYSICAL_LINE_FAULT, diagnostic true.BACKBONE_CAPACITYor capacity/backbone root causes:ESCALATED, teamNETWORK_ENGINEERING, blockerNETWORK_CAPACITY, diagnostic true.PROVISIONING_STALEthat still needs manual correction:ESCALATED, teamTIER2_SUPPORT, blockerPROVISIONING_STALE, diagnostic true.- Ignore
GENERATED_NOISEas a real root cause when stronger outage/account/auth evidence exists.
Issue booleans:
- Set
diagnostic_needed/diagnostic_requiredtrue only for eligible tickets that need or used diagnostics; false for active outages and account/auth failures. - Set
latency_issuetrue for materially high latency on an eligible diagnostic ticket, commonly above roughly 100 ms or supported by latency/root-cause evidence. - Set
stability_issuetrue for high jitter, packet loss, signal-loss, or intermittent/stability root causes on an eligible ticket. - Set
bandwidth_issuetrue when diagnostic bandwidth is materially below subscribed speed, especially below about 80 percent, on an eligible ticket. - For failed or outage-blocked tickets, leave latency/stability/bandwidth booleans false even if noisy diagnostic numbers exist.
Summaries:
- Count final statuses exactly by enum.
- Count route/team fields exactly by enum when the summary asks for team counts.
tickets_requiring_customer_waitis the count of active-outagePENDING_ACTIONtickets.
Mobile Case Action Rules
Always combine case issue type with line and device facts.
Line/account blockers:
status: Suspendedwithsuspension_reason: OVERDUE_BILLand customer willingness to pay: primarySEND_PAYMENT_REQUEST, secondaryRESUME_LINE_REBOOT, final routeBILLING_RECOVERY, exact bill id/amount.- Suspensions not recoverable by payment, ended contracts, fraud, SIM lock/PUK, unsupported states, or missing consent for a charge:
TRANSFER_HUMAN, final routeHUMAN_TRANSFER.
No service:
airplane_mode: true:TOGGLE_AIRPLANE_MODE.sim_statusmissing/not seated:RESEAT_SIM.- Active line with device-side no-signal but no SIM/account blocker may need a self-service radio/device action from the template.
Roaming and mobile data:
- Customer abroad, line roaming enabled, but
phone_roaming_enabled: false:TOGGLE_ROAMING, self-service/device-setting route. - Customer abroad, phone roaming on, but line
roaming_enabled: false:ENABLE_LINE_ROAMING,carrier_update_required: true, final routeCARRIER_UPDATE. mobile_data_enabled: false:TOGGLE_MOBILE_DATA, device-setting route.- Data usage at/over
plan.data_limit_gbwith an accepted refuel amount:REFUEL_DATA; setdata_refuel_gbto the accepted amount and chargeaccepted_gb * data_refueling_price_per_gb. - Respect customer preferences such as no plan change; use refuel rather than plan migration when that is the accepted recovery.
Slow data:
data_saver_mode: true:TOGGLE_DATA_SAVER.- Old or restricted
network_mode_preferencesuch as3g_only:SET_NETWORK_MODE. vpn_connected: true:DISCONNECT_VPN.
MMS and messaging:
- Missing messaging permissions:
GRANT_MESSAGING_PERMISSION; setpermissiontosms,storage, orsms_and_storagebased on exactly what is false. - Missing APN/MMSC evidence:
RESET_APN_REBOOTwhen that enum is available.
Defaults and summaries:
- Use
secondary_action: NO_ACTIONunless a two-step operation is required, such as payment then line resume/reboot. - Use
charge_amount_usd: 0.0and emptybill_idwhen no charge/bill applies. - For mobile-data worklists, classify
REFUEL_DATAasDATA_RECOVERY, line-level roaming enable asCARRIER_UPDATE, and device toggles/settings asDEVICE_SETTING_FIX. - For contact-center queues, self-service device actions count as
SELF_SERVICE, overdue payment recovery asBILLING_RECOVERY, carrier line changes asCARRIER_UPDATE, and unresolved/manual cases asHUMAN_TRANSFER. - Sum charges as numbers, not strings, with the requested decimal precision.
Enterprise Export Response Rules
- Identify the incident id from the email/reference, then fetch the incident record for account id, severity, owners, product, and status.
- Determine
failure_windowfrom export runs withstatus: FAILED; use the first and last failed run dates and count failed days. - Set
backfill_daysto the failed-run count that requires or received manual backfill. If a later succeeded run or message confirms recovery, the response can still need finance review for credits. - Derive
root_cause_categoryby humanizing the failure code and confirming with messages. For example, a stale credential code plus rotation/old-secret evidence becomes a concise stale-credential-after-rotation category. - Set
contributing_alert_issuetoARCHIVED_ALERT_ROUTEwhen alert evidence is in an archive/archived-alert channel or clearly routed to an archive; useNONEwhen alert handling was normal,UNKNOWNwhen evidence is missing. - Fetch SLA terms and apply the credit only when the trigger is met, such as the required number of consecutive failed export runs.
- Copy
engineering_owner,account_owner, andseverityfrom the incident unless stronger response requirements override them. - Build response artifacts from requirements:
channel_name: lowercase hyphenated client/legal name; keep corporate suffixes unless instructed otherwise.evidence_folder:<Client Name> <Month YYYY> Investigation, based on the failure window month.report_title:<Client Name> Export Failure - Resolution Reportunless the requirements specify another title style.share_permissions: include only required users, in the listed order. Use explicit permission evidence when present; if only two response-package users are listed, the usual convention is firstview, secondedit.
- Set
response_status:NEEDS_FINANCE_REVIEWwhen an SLA credit is owed;NEEDS_ENGINEERING_REVIEWwhen root cause/backfill/owner evidence is incomplete;UNDER_INVESTIGATIONwhen the incident lacks enough resolution evidence; otherwiseREADY_TO_SEND.
Common Pitfalls
- Do not let generic diagnostic noise override a clear outage, invalid account, auth failure, or suspension.
- Do not mark outage tickets as requiring diagnostics.
- Do not reorder records while sorting or grouping unless the template explicitly asks for ascending ids.
- Do not omit empty-string fields; templates often require
""for non-applicable ids. - Do not output explanatory text, Markdown, or comments around the final JSON.