---
owner: Mia
last_reviewed: 2026-11-03
review_cadence_days: 90
next_review: 2027-02-01
version: 1.0
---

# Runbook: HarborMug return triage

[Home](index.md) · [SOP](sop.md) · [Policy](returns.md) · [Glossary](glossary.md)

Document owner: Mia. Trigger: a domestic unused-return request. Active handling estimate: 10 minutes; external waiting is not included. Mia carries out Steps 1–2; Alex owns Step 3's review. The case package prepares the Step 3 handoff; it does not assert that Alex has reviewed it.

Before starting, open the [case ledger](case-ledger.csv), save its previous state as a numbered snapshot and read the [A100 example](case-a100.md). All customer text is a draft until the appropriate merchant gate clears. In this package, no message or refund is executed.

### Step 1: Verify the order and dates

Open the case ledger and save its current state as a numbered snapshot before editing. Match the request to the order ID and product. Record the delivery date, request date, their evidence references, and the reported product condition. Confirm this is a domestic return; if the location is unknown, hold for Alex. Subtract the delivery calendar date from the request calendar date; do not count dispatch days or add an extra day. For A100, the supplied order record gives 2026-10-20 and 2026-11-03, so elapsed_days = 14. The source record supports the example; a live case needs a verified delivery record.

- Owner: Mia
- Duration: 3 minutes
- Success: Ledger shows order_match=true, domestic=true, delivery_evidence=merchant order record, delivered=2026-10-20, requested=2026-11-03 and elapsed_days=14 for A100.
- Failure: Ledger shows order_match=false, domestic=unknown/false, delivery_evidence=missing, delivered_date=missing, invalid_date=true or elapsed_days<0.
- Rollback: Restore the numbered snapshot of the prior ledger values, record the correction reason in the case history, and keep the case on hold. Order verification itself is read-only.
- Escalation: Alex; Mia records the missing or conflicting facts and stops eligibility decisions until Alex resolves them.

**Recovery:** If the delivery date or evidence is missing, set eligibility=hold_evidence and list exactly what is missing; do not substitute the dispatch date or today's date. If the order does not match or the dates are impossible, set eligibility=hold_evidence, retain the original source values, and ask Alex to verify the correct order/date record. Resume this step only after the corrected source is recorded.

### Step 2: Record eligibility and prepare the label request

Apply the unused-return rule only after Step 1 is complete. A verified unused domestic item requested 0–30 calendar days after delivery may be marked eligible_pending_inspection. Day 30 is included because the supplied escalation rule is elapsed_days>30. Treat unopened as the supplied evidence of unused condition for A100, with inspection still pending. Set label_request=draft and ask Alex for an approved label, the warehouse return address, and a decision on the return-shipping fee. Record these as separate fields so a blocked label never becomes an automatic refund rejection.

- Owner: Mia
- Duration: 4 minutes
- Success: Ledger shows eligibility=eligible_pending_inspection, unopened=true, elapsed_days=14, inspection=pending and label_request=draft for A100; label_dispatch=blocked while label/address/fee decision are missing.
- Failure: Ledger shows used=true, condition=unknown, elapsed_days>30, approved_label=missing, warehouse_address=missing or return_shipping_fee=unconfirmed; the relevant gate remains held.
- Rollback: Restore the prior eligibility and label fields from the numbered snapshot, keep the correction note, and discard any unsent instructions. Reopen the hold with Alex.
- Escalation: Alex; Mia records a draft label request or policy-exception handoff in the case ledger.

**Recovery:** For a used item, an unknown condition, or a request after 30 days, set eligibility=hold_merchant_review and record the observed reason; do not automatically approve or reject an exception. Resume only on Alex's documented decision. For a missing label, warehouse address, or fee decision, preserve eligible_pending_inspection when supported, set label_dispatch=blocked, and keep instructions as an unsent draft. Resume the label gate only when Alex supplies all three approved details. There is no carrier integration in this process.

### Step 3: Prepare the approval handoff and retain the reply draft

Mia prepares the ledger and draft handoff for Alex. Alex owns the review and records any subsequent decision. Check the order evidence, elapsed days, unused-condition statement, inspection status, approved label/address, fee decision and proposed refund basis. A completed triage package can remain pending; an approval is not implied by preparing it. A100 has no inspection result, approval reference or confirmed refund amount, so preserve refund_status=pending_merchant_approval, reply=draft and refund_executed=false. The supplied $24 product price is not a confirmed refund amount.

- Owner: Alex
- Duration: 3 minutes
- Success: Ledger shows refund_status=pending_merchant_approval, approval_reference=missing, refund_amount=unconfirmed, reply=draft and refund_executed=false for A100; handoff recipient field set to Alex.
- Failure: Ledger shows approval_reference=missing, refund_amount=unconfirmed or inspection=pending when anyone attempts a final approval or refund-confirmation reply; final_confirmation=blocked.
- Rollback: Withdraw the unsent draft, restore incorrect ledger fields from the numbered snapshot and retain the correction history. An actual refund cannot be rolled back here; escalate to Alex if one was executed elsewhere.
- Escalation: Alex; if Alex is unavailable, Mia retains the pending state and reviews the queue during the next staffed business session. No substitute approver is authorized by this SOP.

**Recovery:** If approval evidence or the amount is missing, keep final_confirmation=blocked and give Alex the exact missing fields. If inspection has not happened, do not label the return accepted; keep inspection=pending. Resume a final decision only after Alex records the decision reference, approved amount and inspection disposition. No payment execution occurs in this process. If an instruction was already sent in error, the draft cannot retract it: record what was sent and ask Alex to approve corrective communication; do not falsely mark the message unsent.


## Stop, resume and finish

Stop at the first unsupported decision. Keep eligibility, label-dispatch and refund-confirmation statuses separate. A label hold can coexist with an eligible return. Missing approval is an expected pending state, not evidence that a refund was rejected.

Triage preparation is complete when the ledger contains the source dates, elapsed days, condition, eligibility, blocked gate, next owner and an unsent handoff/reply. The return itself is not complete until the merchant supplies its final disposition through the appropriate process.

For A100: eligible_pending_inspection; label_request=draft; label_dispatch=blocked; refund_status=pending_merchant_approval; reply=draft; refund_executed=false. Alex is the next decision owner. Mia checks the queue at the next staffed business session. No response SLA is supplied.

[Customer reply drafts](case-a100.md) · [Care wording](care.md) · [Home](index.md).
