Reflect-3 CRM Support SOP
Use this skill for support-console tasks where the answer must be inferred from CRM records rather than from the intake text alone.
Core Workflow
- Read the prompt, payload, and answer template first.
- Use the support-console base URL supplied by the task or environment. If the prompt mentions a local default but the harness provides a different shared console URL, use the harness URL.
- For every listed item, retrieve the authoritative records before deciding:
- Fixed-line tickets: ticket, account, active outages, then diagnostics only if still needed.
- Mobile cases: case, line, device, plan, and bill.
- Enterprise export complaints: enterprise account, incident, export runs, and internal messages.
- Preserve the payload order unless the template explicitly says to sort by an ID.
- Return only JSON conforming to the answer template. Do not include explanations, comments, Markdown, or extra keys.
- After filling decisions, recompute all summary counts from the decisions, not from memory.
Fixed-Line Service Tickets
Resolve high-level blockers before diagnostics:
- Missing account record: mark the ticket failed/invalid. Use no escalation team and do not require diagnostics.
- Authentication failure or unrecovered account recovery: mark failed/auth failed. Use no escalation team and do not require diagnostics.
- Suspended account from overdue billing or account hold: mark failed/ineligible or overdue suspension. Route to
ACCOUNTS_PAYABLEwhen a team field is available. Do not require diagnostics. - Active outage matching both service area and service type: mark pending/customer-wait or outage wait. Use the matching outage ID when requested, no escalation team, and no diagnostics.
- Only run diagnostics after the ticket survives the account, auth, suspension, and outage checks.
Diagnostic routing:
VOICE_PROFILE_STALE: usually a resolved self-contained/profile refresh outcome, with diagnostics required, no blocker, and no handoff team.CONFIGURATION_DRIFT: usually auto-troubleshooting/resolved with no handoff team.PROVISIONING_STALE: route toTIER2_SUPPORTas an escalation or provisioning stale blocker, especially after moves or service reprovisioning.BACKBONE_CAPACITY: route toNETWORK_ENGINEERINGwith a network capacity blocker.FIBER_DROP_DAMAGEorSIGNAL_LOSS: route toFIELD_OPSwith a physical line fault blocker.
Metric flags and blockers:
- Treat latency above roughly 100 ms as a latency issue when diagnostics are in scope.
- Treat jitter around 40 ms or higher, or physical/signal-loss causes, as a stability issue. Jitter in the low 30s alone is not enough.
- Treat measured bandwidth far below the subscribed rate as a bandwidth issue when diagnostics are in scope.
- For outage, invalid-account, auth-failed, or suspended-account routes, leave diagnostic issue flags false unless the template explicitly asks for historical diagnostic facts.
Summary habits:
- Count pending/customer-wait tickets only from active outage wait decisions.
- Team summary counts are counts of decisions routed to that team, not counts of all possible causes.
- Status counts must match the final status assigned to each listed ticket.
Mobile Support Cases
Lookup order: case -> line -> device -> plan -> bill. Use the smallest operation that directly addresses the observed setting, status, or allowance issue.
Common actions:
- Missing SIM or device reports no SIM:
RESEAT_SIM. - Airplane mode on:
TOGGLE_AIRPLANE_MODE. - Mobile data disabled:
TOGGLE_MOBILE_DATA. - Phone roaming disabled while the line is roaming-enabled:
TOGGLE_ROAMING. - Customer abroad, phone roaming on, but line roaming disabled:
ENABLE_LINE_ROAMING, carrier update required, routeCARRIER_UPDATE. - Line suspended for overdue bill:
SEND_PAYMENT_REQUEST, thenRESUME_LINE_REBOOT; include bill ID and overdue amount, routeBILLING_RECOVERY. - Data usage exceeds the plan limit and the customer accepts a refuel:
REFUEL_DATA; charge accepted GB multiplied by the plan refuel price per GB; routeDATA_RECOVERY. - Data saver enabled with slow data:
TOGGLE_DATA_SAVER. - Old or limited network mode such as
3g_only:SET_NETWORK_MODE. - VPN connected with slow data:
DISCONNECT_VPN. - Messaging/MMS failure from missing app permission:
GRANT_MESSAGING_PERMISSIONand setpermissiontosms,storage, orsms_and_storagebased on the missing device permissions. - MMS/APN profile problems with no permission issue: use the APN reset/reboot action when available.
Mobile output rules:
- Use
NO_ACTIONfor secondary action unless the workflow specifically requires a follow-up, such as resuming a line after payment. - Put
0.0data refuel GB and0.00charge when not applicable. carrier_update_requiredis true only for carrier/line-side changes, not ordinary phone setting toggles.- Count final routes in the summary: data recovery, carrier update, device setting fix, billing recovery, self-service, or human transfer according to the template labels.
- Total estimated customer charge is the sum of explicit charges only.
Enterprise Export Complaint Packages
Use console evidence in this order:
- Match the client to an enterprise account.
- Match the complaint reference to the incident.
- Read export runs for that incident. The failed run dates define the failure window; count consecutive failed days.
- Use the next successful run or backfill evidence to confirm recovery/backfill. Backfill days normally equal the failed export days requiring recovery.
- Read internal messages for root-cause details, SLA credit terms, alert routing issues, and owner context.
- Use incident fields for severity and engineering owner; use account fields for account owner and finance owner.
Enterprise decision rules:
- Root cause should be concise but evidence-based: combine the export failure code with internal-message detail when the message explains the failure.
- If the relevant alert or root-cause message was posted only in an archive/archived alert channel, set the alert issue to
ARCHIVED_ALERT_ROUTE. - SLA credit percent must come from contract/account/internal-message evidence. Do not invent a credit from severity alone.
- Construct response artifacts from the payload naming requirements when no console artifact record exists:
- Lowercase hyphen channel names should use a slugified client and incident/subject phrase.
- Investigation folders should include the client and relevant incident/response date as requested.
- Report titles should be human-readable and include the client plus export failure subject.
- Share permissions must include only the users requested by the payload, in the requested order. Use role evidence when available; otherwise choose conservative access aligned to the review purpose.
- Choose response status from missing work:
READY_TO_SENDonly when root cause, failed window, backfill, credit handling, owners, artifacts, and permissions are all resolved.NEEDS_FINANCE_REVIEWwhen SLA credit is present but finance approval/handling is not clearly complete.NEEDS_ENGINEERING_REVIEWwhen root cause or backfill is not confirmed.UNDER_INVESTIGATIONwhen the incident remains unresolved and required evidence is still incomplete.
Final JSON QA
Before returning:
- Compare every enum value to the answer template exactly.
- Preserve required ordering: payload order for ticket/worklist rows, ascending ID only when the template says so, and requested user order for permissions.
- Ensure booleans are real JSON booleans, not strings.
- Use empty strings for non-applicable IDs when the template asks for strings.
- Recalculate all summaries from the final decisions.
- Make sure no decision relies only on customer wording when console records contradict or refine it.