# FIXXO — Outreach System

The AI-assisted partner-recruitment system for Herndon, Reston and Seattle. Four files define it; one function enforces it.

| File | What it is |
|---|---|
| `COMPLIANCE.md` | The law and the operating verdict — **read this first** |
| `VOICE_AGENT.md` | The AI companion: copilot prompt, AI-voice prompt, call flow, objection library, tool calls |
| `SMS.md` | Consent-gated SMS sequences and the 24/7 inbound AI conversation agent |
| `EMAIL.md` | The one channel where cold is lawful — CAN-SPAM + WA CEMA sequences |
| `sequences.json` | Machine-readable config: channels, consent requirements, cadences, guardrails |
| `../db/outreach_schema.sql` | Consent records, suppression, DNC checks, call/message logs, and `can_contact()` |

---

## The honest architecture

You asked for **AI cold calling**. Built as sold, that is presumptively illegal for our list, and I would be doing you a disservice to ship it.

The FCC ruled in February 2024 that an AI-generated voice is an **"artificial voice"** under the TCPA. Marketing calls to a **wireless** number then need **prior express written consent**. There is **no B2B carve-out** — the TCPA treats every cell phone as residential, and most independent tradespeople's numbers are mobile. Damages are $500–$1,500 **per call with no cap**, plus a private right of action. In **Washington** it is worse: RCW 80.36.400 bans automatic dialing-and-announcing for solicitation outright.

So we built the model that gets you the same 50 partners, legally:

| Mode | Who speaks | Cold? | Consent needed | Today |
|---|---|---|---|---|
| **A** Human-dial | Person | yes | DNC + hours + identification | ✅ |
| **B** AI copilot | Person (AI assists, never speaks) | yes | same as A | ✅ **default** |
| **C** AI voice | AI | **no** | written consent + AI disclosure + recording consent | ✅ where gated |
| **D** Inbound AI + SMS | AI | inbound only | their contact triggers it | ✅ |

**Mode B gives you most of the leverage of an AI caller with none of the exposure**: the AI transcribes live, scores intent, surfaces the right objection in under a second, and writes the log — while a human speaks. The voice the prospect hears is a person's, which is the entire compliance point.

**Mode C is the upgrade** once we own consented leads: an opt-in partner form, a `YES` reply, a signed agreement — then the AI can call, disclosed, within hours, with a consent record we can produce on demand.

---

## The gate

Every outbound send — call, text, email — must pass one function first:

```sql
select can_contact('+17034373284', 'ai_call');
-- false  →  the dial does not happen
```

It returns true only when the number is not suppressed, the DNC check is clear within 31 days, a live unrevoked written-consent record exists for that channel (for AI voice and SMS), and the local hour is between 08:00 and 20:59. There is **no force-send button** — not in the ops console, not in the API. That is deliberate.

---

## How a day runs

1. **Morning.** Pull the day's list from `sourcing_leads` (registry-derived — see `db/SOURCING.md`). Scrub against the National DNC and internal suppression. Landlines first.
2. **Dial.** Human dials, Mode B copilot on screen. 8:00–20:59 local. Identify Fixxo and the purpose in the opening.
3. **Conversation.** Copilot surfaces objections from `VOICE_AGENT.md` §5. Nothing auto-speaks.
4. **Close.** Book a verification slot, or send the onboarding link (only if consent or an inbound trigger exists).
5. **Log.** `call_log` gets identification, disclosure, recording consent, local hour, DNC result, outcome, transcript.
6. **Follow-up.** `S1` runs only where consent exists. Inbound replies are handled by the AI conversation agent within 60 seconds.
7. **Evening.** `v_outreach_funnel` shows dials → interested → advanced, per market and per source. `do_not_call` above 3% means the list or the script is wrong.

---

## What we will not build

- An AI that dials cold numbers.
- An autodialer touching cell phones.
- A "force send" or "override DNC" control.
- Text blasts to cold numbers.
- Recording in Washington or California without spoken consent.
- Any copy that promises job volume or income.

These are not style preferences. `COMPLIANCE.md` §9 lists what each one costs.

---

## Before the first dial (W−8 gate)

- [ ] Virginia and Washington attorney review of the scripts, the AI disclosure and the consent language
- [ ] Written internal DNC policy + recorded staff training
- [ ] National DNC access and 31-day scrub cadence documented
- [ ] `can_contact()` deployed and wired to **every** outbound path in code
- [ ] Global suppression write-back tested across all channels
- [ ] AI disclosure line locked and non-configurable
- [ ] Recording disabled by default; enable path requires captured spoken consent
- [ ] `sequences.json` loaded and validated against `db/outreach_schema.sql`

**Recommendation:** start with **Mode A + B, email (E1/E2) and inbound AI**. Prove the funnel on the 15 seeded Herndon numbers. Add Mode C only for partners who have signed a consent record — and never in Washington.
