cs.gohigherlevel
Get pinged here when a case is escalated or the AI can't classify one.

Taxonomy

The same live decision tree as /playbook, annotated with how many logged cases actually reached each node. 99 nodes · 94 edges. 1876 cases logged in window: last 90d (2026-07-15 → now) · 887 not yet classified in this window (last_label is NULL — shown nowhere on the tree, only here) · 365 identified as non-support mail (SPAM_OUTREACH) and EXCLUDED above — toggle below to include — a floor, not a total: some spam is still misclassified as OFF_SCRIPT or unclassified.
Refunded (Shopify)
£4,486.65 · ¥50,935
114 refunds executed (4 legacy, no amount on file)
Refunded (Whop)
£612.44
12 whop refunds executed (2 legacy, no amount on file)
Replacement items sent
1
1 replacement order
Manufacturer replacement requests
60
separate path: Discord message, not a Shopify order

Executed actions only (proposed/rejected/failed/superseded/cancelled/unresolved don't count as real outcomes) — from pending_actions, filtered to the same store + date window as the tree below, on execution date (falls back to creation date for legacy rows with no execution timestamp on file). Currencies are never summed together or converted — no trustworthy FX rate is available here, so a wrong blended number would be worse than three separate ones.

–

Approximation: ASKS_REFUND has three real sub-paths depending on case facts not stored per case (refund reason known? shipped yet?). Every ASKS_REFUND case here is attributed to the "we have not asked why yet" starting context — exact for a case's first-ever ASKS_REFUND message, approximate for one reached deeper into a thread. Every other node's count is an exact tally of 989 classified cases in the current window walking cs_policy.decide()'s real ladder for their label.

123 cases reached this node root classify hub label offer step refund info escalate
Click any node for its full decide() output plus the taxonomy count.
Always-on rulesNot branches, and not tallied here — these are checked before/around the (label × rung) table for every case, so a per-node count would double-count.
LEGAL_THREAT
fires from ANY rung
always
ESCALATE ●
THREATENS_CHARGEBACK
fires from ANY rung
clear ultimatum
REPLY_INFO ●
mentioned, unclear
REPLY_INFO ●
£200 circuit breaker
applies AFTER any money action
order £150 (≤ £200)
FULL_REFUND · 150.00 GBP ●
order £350 (> £200)
ESCALATE · 350.00 GBP ●
Promise ledger override
applies for ANY label
open £80 refund promise on file
EXECUTE_PROMISE · 80.00 GBP ●
The flow
Inbound customer
message1,876
classify
Classify message
→ 1 of 17 labels989
opens a case
Opens a case
15 labels989
ADDRESS_CHANGE
▸ ADDRESS_CHANGE8
ASKS_REFUND
▸ ASKS_REFUND122
we have not asked why yet
we have not asked why yet122
reason known · not dispatched
reason known · not dispatched
reason known · already in transit
reason known · already in transit
ASKS_REPLACEMENT
▸ ASKS_REPLACEMENT3
AUTHENTICITY_DOUBT
▸ AUTHENTICITY_DOUBT17
CANCEL_REQUEST
▸ CANCEL_REQUEST96
DAMAGED
▸ DAMAGED21
LEGAL_THREAT
▸ LEGAL_THREAT33
NOT_ARRIVED
▸ NOT_ARRIVED173
OFF_SCRIPT
▸ OFF_SCRIPT205
PRODUCT_QUESTION
▸ PRODUCT_QUESTION11
SIZING_QUESTION
▸ SIZING_QUESTION12
THREATENS_CHARGEBACK
▸ THREATENS_CHARGEBACK33
WHERE_IS_ORDER
▸ WHERE_IS_ORDER132
WRONG_ITEM
▸ WRONG_ITEM23
WRONG_SIZE
▸ WRONG_SIZE100
at rung 0 · NEW
OFFER_REPLACEMENT100
ACCEPTS_OFFER · at rung 1 · REPLACEMENT_OFFERED
EXECUTE_PROMISE ●
REFUSES_OFFER · at rung 1 · REPLACEMENT_OFFERED
OFFER_DISCOUNT_10_KEEP · 10%100
ACCEPTS_OFFER · at rung 2 · KEEP_10_OFFERED
EXECUTE_PROMISE ●
REFUSES_OFFER · at rung 2 · KEEP_10_OFFERED
OFFER_DISCOUNT_20_KEEP · 20%100
ACCEPTS_OFFER · at rung 3 · KEEP_20_OFFERED
EXECUTE_PROMISE ●
REFUSES_OFFER · at rung 3 · KEEP_20_OFFERED
OFFER_PRICE_MINUS_SHIPPING100
ACCEPTS_OFFER · at rung 4 · PRICE_MINUS_SHIPPING_OFFERED
EXECUTE_PROMISE ●
REFUSES_OFFER · at rung 4 · PRICE_MINUS_SHIPPING_OFFERED
FULL_REFUND ●100
answers an offer
Answers an offer
2 labels0
ACCEPTS_OFFER
▸ ACCEPTS_OFFER
REFUSES_OFFER
▸ REFUSES_OFFER