# 2026-04-03 Daily Notes

## Leah AI — Morning Session

### Prompt v3.0 deployed to Vapi (32c93e89)
Changes from v2.0:
- Consultative selling section added
- Transfer flow: Leah asks reason before transferring (ask-then-connect, not gatekeeping)
- Same-team messaging: now leads confidently with "Yes, we do our best..."
- Frequency discount callout during quote flow
- Cancellation fee phrasing: "100% of the cleaning fee"
- Versioning switched to semver (v1.0 / v2.0 / v3.0)

### Transfer Loop Fix — Deployed
- Old behavior: bridge dialed 647-490-2523 + DTMF '2' — would loop when Leah goes live on key 2
- Fix: bridge now dials 647-490-2523 with NO DTMF — Aircall's "no input" default = CS team
- New /cs-transfer function deployed (Twilio build ZBaf7fe52, deployment ZD5145fc2a)
- Local copy saved: ~/nmc-phone/functions/cs-transfer.js

### Number Layout (confirmed)
- 647-490-2523: Main Aircall IVR (production, untouched)
- 647-799-2731: Leah staging (Vapi phone ID: 92fcdba1) — NOTE: was previously written as 647-779-2731 (typo)
- 647-370-1793: CS Transfer Bridge
- 647-360-9178: Harvey direct

### Versioning Convention Going Forward
- Major (v1, v2, v3): structural changes, new sections, new capabilities
- Minor (v3.1, v3.2): tone tweaks, edge case fixes, single-section updates
- Files: leah/versions/system-prompt-vX.Y.txt

### Diagram Collaboration Approach
- Mike wants collaborative process diagrams
- Workflow established: Harvey writes/hosts HTML Mermaid diagram at macbookair.taila88920.ts.net/www/leah-flow.html
- Mike says what to change in plain English, Harvey updates file, Mike refreshes
- No copy-paste needed — hosted on preview server
- File: workspace/www/leah-flow.html

### Mike's Open Questions / Decisions Pending
- Leah doesn't self-learn between calls — learning loop = post-call summaries → prompt updates
- Selling skills: defer until real call data exists (a few weeks of transcripts will show gaps)
- Bookings: Leah collects info + quote, can't confirm time slots, team (Abigael) books via Launch27 UI

### Staging Test Status
- v3.0 live on 647-799-2731
- Transfer bridge updated — no loop
- Voice: ElevenLabs Charlotte (XB0fDUnXU5powFXDhCwa)
- Mike has NOT yet done a production test of v3.0

### Not Yet Built (Leah backlog)
- IVR key 2 → forward to Leah's number (needs Mike approval before touching production)
- SMS booking link during calls
- Incomplete quote follow-ups
- Post-call GHL contact creation
- Launch27 booking investigation (Mike insists API works; all endpoints return 404 — needs more digging)

---

## Leah — Agent Architecture + Training Data (Hermes thread, ~8-2pm)

### Agent Architecture Decision
- Current IVR: Key 1 = new customers (sales), Key 2 = existing customers (CS)
- Aircall data: 248 inbound calls in Nov 2025 sample — 58 went to Sales team, 33 to CS/Admin (~2:1 split)
- Avg call duration: 109s — most calls are quick
- Decision: **Two specialized agents** makes sense at scale given the clear routing split
  - Key 1 → Sales Leah (aggressive close, fast quote, booking automation)
  - Key 2 → CS Leah (account lookup, complaint intake, policy depth)
  - Same identity ("Leah"), two Vapi assistant configs
  - Defer the split until after a few weeks of live call data
- Architecture should be built for scale from day one — call volume can spike quickly

### Training Data Sources
- **services@nomorechores.com**: 25,375 emails total
  - 2023: 231 | 2024: 14,368 | 2025: 10,153 | 2026: 623
  - Folders: Inbox, Sales, "Assigned to Abigael", "Assigned to Mike", Waiting, potential-contractor
  - Have IMAP access via app password
  - Sales folder = best signal for new customer inquiry patterns
- **Aircall recordings**: ~2,377 calls, audio only (S3 presigned URLs)
  - No native transcripts — need Whisper to transcribe
  - call-transcriber cron already exists but outputs to GHL/Slack, not training DB
- **GHL call notes**: summaries from recent calls, accessible via API
- **Airtable**: call data exists but API timed out during check

### Planned Analysis (not yet started — Mike said to commit and continue in main channel)
- Pull 500-1000 emails from Sales folder (2024-2025)
- Categorize: inquiry types, common questions, objections, resolutions
- Output: pattern report to directly feed Leah's sales prompt
- Also: batch transcribe Aircall recordings via Whisper for CS patterns

### Mike's Preferences on This
- Start with 2024-2025 data (most relevant, 14K+ emails)
- Sales folder first
- Goal: common inquiry types, questions, objections, resolutions

## Leah Strategic Decisions (8am session)

### Model Clarification
- Voice (Vapi): GPT-4o — no memory between calls
- SMS: Claude — no memory between sessions
- Neither retains memory; must use external tools (GHL/Airtable) for persistence

### What Leah Currently Collects on Booking Calls
- Name, address, beds/baths, sq footage, service type, frequency, date preference
- Then says "team will confirm" — NOT GOOD ENOUGH per Mike

### Booking Philosophy — Major Decision
- Mike does NOT want Leah to hand off bookings to a human
- Leah should be fully autonomous: check availability, confirm date, create booking
- Customer must hang up KNOWING they have a confirmed booking on a specific date
- This requires building tools: check_availability + create_booking via Playwright (Launch27 UI)

### Escalation Philosophy — Revised
- Handoff/transfer ONLY for: damage/safety/theft/legal, customer demanding human, unresolvable issues
- NOT for: bookings, account lookups, complaints (intake only), FAQ
- After hours: same behavior but no transfers available — log follow-up task for next business day instead
- Office hours: 8am–5pm EST, Monday–Saturday

### Identity Verification — Current Problem
- Leah currently says "team member will pull up your account" — Mike doesn't like this
- Problem: Leah has NO lookup tools right now — can't query anything
- Fix needed: build lookup_customer tool (Airtable or GHL query by phone number)

### Tools Needed (Priority Order)
1. lookup_customer — query by phone/name+address → Airtable (straightforward, high value)
2. check_availability — see open slots for date → Playwright on Launch27 UI
3. create_booking — actually book the clean → Playwright on Launch27 UI
4. send_sms — fire confirmation text mid-call → Twilio outbound
5. create_followup — after-hours task for next business day → GHL contact note

### QA System Needed
- Mike wants QA across all channels: calls, SMS, email, chat
- Need standard set of questions/info Leah must collect per interaction type
- Not overthinking — a defined intake checklist per scenario is the right approach

### SMS Path
- Mike doesn't know what to do with the SMS path in diagrams — don't ask him, just map what exists
- Leah handles SMS via /sms-chat on Twilio Serverless (Claude-based), already live

### After-Hours Rule
- Behaves same as normal hours
- Only difference: no humans available for escalation
- Instead of transfer: "I've flagged this, someone will call you back when the office opens"
- Flag = GHL follow-up task (to be built)

### Next Build Target: lookup_customer tool
- Airtable query by phone number → return customer name, address, booking history
- Gives Leah instant account awareness without human handoff
- Unblocks: identity verification, account questions, complaint intake with context
