# SOP: Customer Complaint & Issue Handling
**Version:** 1.0  
**Last Updated:** 2026-03-26  
**Owner:** Harvey (AI Chief of Staff)  
**Applies to:** Agents (Leah, Harvey), Human staff (Abigael, Mike)

---

## Overview

This SOP governs how No More Chores handles all customer complaints, quality issues, damage claims, contractor misconduct, billing disputes, and safety incidents. It is designed to be executable by an AI agent or human staff member.

**Core principles:**
1. Acknowledge fast (within 2 hours)
2. Empathize first, investigate second
3. Never blame the contractor to the customer
4. Resolve generously — a retained customer is worth far more than the cost of resolution
5. Document everything in GHL

---

## Step 1: Triage & Classification

Upon receiving any complaint (email, SMS, phone, voicemail), classify it immediately.

### Complaint Categories

| Code | Category | Examples | Urgency |
|------|----------|----------|---------|
| `QC` | Quality | Missed areas, poor clean, smells | Normal |
| `DMG` | Damage | Broken items, stains, property damage | HIGH |
| `BEH` | Contractor Behavior | Rudeness, theft suspicion, inappropriate conduct | CRITICAL |
| `NS` | No-Show / Late | Team didn't arrive, significant delay | HIGH |
| `BIL` | Billing Dispute | Overcharged, card charged in error | Normal |
| `SAF` | Safety | Injury, hazardous material misuse, security breach | CRITICAL |
| `GEN` | General Feedback | Suggestions, minor dissatisfaction | Low |

### Triage Decision Tree

```
Incoming complaint
│
├─ Is this a SAFETY incident? (injury, theft, assault)
│  └─ YES → CRITICAL escalation → Mike immediately → do not resolve independently
│
├─ Is this DAMAGE to property?
│  └─ YES → DMG workflow (see Section 3B)
│
├─ Is this CONTRACTOR BEHAVIOR?
│  └─ YES → BEH workflow (see Section 3D) → Mike must be informed
│
├─ Is this a NO-SHOW or late arrival?
│  └─ YES → NS workflow (see Section 3C)
│
├─ Is this a BILLING issue?
│  └─ YES → BIL workflow (see Section 3E)
│
└─ Quality complaint or general feedback
   └─ QC workflow (see Section 3A)
```

---

## Step 2: Immediate Acknowledgment (ALL complaints)

**Target: within 2 hours of complaint being received**

If not already acknowledged, send this immediately:

> Subject: Re: [their subject] — We're On It
>
> Hi [First Name],
>
> Thank you for reaching out. We're sorry to hear about your experience — this is not the standard we hold ourselves to at No More Chores.
>
> We've received your message and a member of our team will follow up with you shortly to make this right.
>
> Best,  
> [Agent Name]  
> No More Chores  
> 647-490-2523

**Agent action:** Log contact in GHL with tag `complaint-open`. Set pipeline stage to `Complaint - Under Review` if complaint pipeline exists, otherwise note in contact record.

---

## Step 3: Category-Specific Workflows

---

### 3A: Quality Complaint (QC)

**Situation:** Customer unhappy with the quality of the clean — missed areas, streaks, odors, not up to standard.

**Steps:**

1. **Gather details** (respond within 4 hours):
   - Which areas were missed or unsatisfactory?
   - Do they have photos?
   - When was the service?

2. **Validate:** Check booking record in GHL/Launch27. Confirm what service was booked and what the scope included.

3. **Assess:**
   - Was the scope clearly outside what was booked? → Explain scope, offer add-on booking
   - Was this a genuine quality failure? → Offer re-clean or partial refund

4. **Resolution options (in order of preference):**
   - **Re-clean** (preferred): Offer a complimentary re-clean within 5 business days. Different contractor than original if customer prefers.
   - **Partial refund** (25-50%): If re-clean is refused or logistically difficult.
   - **Full refund** (last resort): Only if service was catastrophically poor. Requires Mike approval if > $200.

5. **Template response:**
> Hi [Name],
>
> Thank you for letting us know — this is not the level of service we aim to deliver.
>
> We'd love the opportunity to make this right. We can send a team back at no charge within the next few days to address the areas that weren't up to standard. Would that work for you?
>
> If a re-clean isn't possible, we'd be happy to offer a partial refund instead. Just let us know what works best.
>
> Best,  
> No More Chores

6. **Follow-up with contractor:** Notify contractor lead that a QC complaint was received. Contractors should not contact or review anything with the client. Request their internal account of what happened and any other relevant details they can share about the visit. Log outcome.

   **Contractor notification format (for QC and similar customer issues requiring contractor input):**
   - Name: contractor name
   - Address: service address
   - Date of service: job date
   - Issue: brief summary of the customer-reported concern
   - Action needed: request their account of what happened, any relevant context, and photos if applicable
   - Reply location: instruct them to reply in the thread, not the main channel
   - Reference: complaint ID, e.g. `QC-2026-004`

7. **CRM:** Tag contact `qc-complaint`, log resolution in notes. If re-clean booked, tag `re-clean-scheduled`.

---

### 3B: Damage Complaint (DMG)

**Situation:** Customer or their agent reports that property was damaged during the cleaning.

**This is the highest-stakes complaint type. Speed and empathy are critical.**

**Steps:**

1. **Acknowledge immediately** (Step 2 if not done).

2. **Gather damage details** (within 2 hours of acknowledgment):
   - What was damaged?
   - Do they have photos?
   - What is their estimate of repair/replacement cost?
   - Is the item repairable or does it need replacement?
   - For real estate/staging contexts: Is there a deadline (e.g., listing date, showing)?

   Template message:
   > Hi [Name],
   >
   > We're truly sorry to hear about the damage — that's completely unacceptable and we want to make it right as quickly as possible.
   >
   > To help us move forward, could you send us:
   > - Photos of the damage (if you haven't already)
   > - Any repair or replacement quotes, if you have them
   > - Whether there's a timeline we should be aware of (e.g., a showing or listing date)
   >
   > We'll review right away and get back to you with a resolution plan.
   >
   > Best,  
   > No More Chores

3. **Investigate internally:**
   - Review booking details and contractor assigned
   - Contact contractor directly (not through customer) to get their account of what happened
   - Do NOT share contractor's statement with customer until reviewed
   - Assess: Was the damage likely caused by our team? Was the item pre-existing?

4. **Liability assessment:**
   - **Clear NMC fault** (e.g., broken item, chemical damage from NMC supplies): Take full responsibility. Move to resolution.
   - **Disputed fault** (pre-existing damage, conflicting accounts): Collect more evidence. Do not admit liability in writing yet. Escalate to Mike.
   - **Not NMC fault** (provably pre-existing): Respond with empathy, explain your finding. Offer goodwill gesture.

5. **Resolution options:**

   | Damage Value | Authority | Resolution Path |
   |-------------|-----------|----------------|
   | < $150 | Agent (Harvey/Leah) | Immediate refund or direct reimbursement |
   | $150 - $500 | Abigael to flag, Mike to approve | Repair reimbursement, offer to coordinate repair |
   | > $500 | Mike only | Insurance claim consideration, legal review |

   Resolution types:
   - **Repair reimbursement**: Customer gets repair done, we cover the invoice (up to approved limit)
   - **Replacement reimbursement**: We cover like-for-like replacement cost
   - **Service refund**: Full or partial refund of the cleaning fee (less common for damage — doesn't fix the problem)
   - **Direct repair coordination**: We source and pay a repair professional directly

6. **Contractor accountability:**
   - Flag contractor record internally
   - For first offense: warning + coaching
   - For serious damage (> $300) or repeat: suspend pending investigation
   - Mike makes final contractor decisions

7. **Response after assessment:**
   > Hi [Name],
   >
   > We've reviewed the situation and we sincerely apologize — this shouldn't have happened. We take full responsibility for the damage caused during the clean.
   >
   > We'd like to [cover the cost of repair / reimburse you for replacement / send someone to fix it directly]. [Specific offer here.]
   >
   > Could you [send us the repair invoice / confirm the replacement cost] so we can process this right away?
   >
   > We're committed to making this right quickly.
   >
   > Best,  
   > No More Chores

8. **CRM:** Tag `dmg-complaint`, `dmg-[open/resolved]`. Log all communications and resolution in notes.

---

### 3C: No-Show / Late Arrival (NS)

**Situation:** Contractor did not arrive, arrived significantly late, or left early without completing.

**Steps:**

1. **Acknowledge immediately.** Apologize without excuses.

2. **Investigate:**
   - Contact Abigael: What happened? Did contractor report in?
   - Check if contractor communicated any delay/issue

3. **If no-show:** Offer immediate rebook at customer's convenience + 15% discount on next service.

4. **If significantly late (> 30 min without notice):** Offer apology + 10% discount.

5. **If left early / incomplete:** Treat as quality complaint (QC). Offer re-clean.

6. **Template (no-show):**
   > Hi [Name],
   >
   > We sincerely apologize — there is no excuse for what happened today. You trusted us with your time and we let you down.
   >
   > We'd like to rebook you at your earliest convenience at no charge, with a 15% discount applied. What dates work best for you?
   >
   > Best,  
   > No More Chores

---

### 3D: Contractor Behavior (BEH)

**Situation:** Customer reports inappropriate behavior — rudeness, theft, breach of trust, safety concern.

**CRITICAL — escalate to Mike immediately. Do not resolve independently.**

**Steps:**

1. **Acknowledge complaint.** Do not acknowledge or deny any specific allegation.
2. **Notify Mike immediately** via Telegram or Slack.
3. **Collect full details** from customer: what happened, when, any witnesses or evidence.
4. **Suspend contractor** from active assignments pending investigation.
5. **Mike leads investigation** and determines response.

For theft specifically:
- Advise customer to file a police report if they choose
- Do not interfere with legal process
- Cooperate fully if asked by authorities

---

### 3E: Billing Dispute (BIL)

**Situation:** Customer charged incorrectly, charged twice, or disputes the amount.

**Steps:**

1. **Verify in Launch27 / QuickBooks:** What was actually charged? What was booked?
2. **If overcharge confirmed:** Refund the difference immediately. Apologize.
3. **If charge is correct:** Explain politely, reference the booking details they agreed to.
4. **Template (refund):**
   > Hi [Name],
   >
   > You're absolutely right — there was an error on our end. We've processed a refund of $[amount] to your card. It typically takes 3-5 business days to appear.
   >
   > We're sorry for the confusion and any inconvenience caused.
   >
   > Best,  
   > No More Chores

---

## Step 4: Resolution & Close-Out

Once resolution is agreed:

1. **Confirm resolution in writing** to customer (email or SMS).
2. **Process any refund or reimbursement** within 24 hours of agreement.
3. **Update GHL:** Change tag to `complaint-resolved`. Add resolution summary note.
4. **Contractor follow-up:** Was contractor informed / coached / flagged?
5. **Recovery check-in:** 5-7 days after resolution, send a brief follow-up:
   > Hi [Name], just checking in to make sure everything was resolved to your satisfaction. We appreciate your patience and hope to have the opportunity to serve you again.

6. **If high-value customer or real estate agent:** Mike should send a personal follow-up.

---

## Step 5: Escalation Triggers

Always escalate to Mike when:
- Damage > $300
- Theft or safety allegation
- Customer threatens legal action or social media blowback
- Real estate agent or property manager (reputation multiplier)
- Any issue with media/press potential
- Multiple complaints against same contractor in 30 days

---

## Automation Hooks (for agent/system integration)

The following actions are automatable via GHL, Leah (SMS), or Harvey (email):

| Trigger | Automated Action |
|---------|-----------------|
| Email contains "damage", "broken", "damaged" | Auto-tag DMG, auto-acknowledge, alert Harvey |
| SMS complaint detected by Leah | Leah acknowledges, logs to GHL, pings Harvey/Abigael |
| GHL tag `complaint-open` applied | Trigger notification to Slack #calls |
| 48h since `complaint-open` with no `complaint-resolved` | Alert Abigael + Mike |
| Complaint resolved | Trigger 5-day recovery check-in sequence |

---

## Templates Library

All templates are in this document (see Section 3). Variables:
- `[Name]` = customer first name
- `[Agent Name]` = responding agent
- `[Date]` = specific date referenced

---

## Complaint ID & Thread Naming

### Complaint ID Format
Every complaint gets a unique ID assigned at triage:
```
[CODE]-[YEAR]-[###]
```
Example: `DMG-2026-001`, `QC-2026-002`, `NS-2026-003`

Track the sequence in GHL or a shared doc. Reset annually.

### Contractor Slack Thread Name
When opening a thread in the contractor's Slack channel to discuss a complaint:
```
[CODE]-[YEAR]-[###] · [Job Date] · [Client Name] · [Address]
```
Example: `DMG-2026-001 · Mar 23 · Gillian Hull · 280 Howland Ave`

**Rules:**
- Use the complaint code + ID so it's cross-referenceable with GHL
- Include job date (not complaint date) — that's what the contractor remembers
- Client name gives the contractor context without needing to look it up
- Address confirms the exact job

---

## Version History

| Version | Date | Changes |
|---------|------|---------|
| 1.0 | 2026-03-26 | Initial version, tested against Gillian Hull damage complaint |

