← Project hub · docs · Production readiness
Frozen 2026-09-19 audit: what works, blockers B1-B5, secondary gaps, execution plan.
Download PDF ↓Details
2026-09-19 (PST) · Sage@miniPC · read-only audit (no code, no SEND flags, no Trackmint touched)
Question from Barry: "What do we need to do to roll out in production? What are we missing?" Scope: docs + code under ~/apex/receptionist/, ~/apex/website/projects/ai-assistance/, CoS/leads progress, vault decisions. Standing locks respected throughout: Never Fuller · demo DID +1 (650) 476-2005 only · AUTHORIZE SEND NO.
receptionist/projects/software-template/retell-flow/): Node 20 server mints Retell web-call tokens, flow compiled from JSON (flow/northline.json), 11/11 tests passing, 0 npm vulns. Template-per-vertical architecture already designed (copy template → client folder).demo/broadcast/): builds + previews subscriber messages; SEND hard-disabled by design (button disabled, nothing leaves the browser). Safe demo.Honest framing: this is a demo-grade single-tenant product with a production-grade sales pipeline sitting behind a closed gate. progress.md self-assesses pctReady 58 — fair.
northline.json greet node never says the caller is talking to an AI/virtual assistant. Several states now require this; it's also the honest default and costs one sentence.[POSTAL ADDRESS — Barry to insert]) — flagged as QA blocker #1; blocks any send.| # | Gap | Why it matters | Effort | Who |
|---|---|---|---|---|
| O1 | No monitoring on the call path — nothing in ~/apex/monitoring/ watches the demo DID or a future customer line; no alert if Retell is down or the agent errors mid-call | "Fails as silence on a real client's phone" (our own CLAUDE.md) | S — daily/hourly scripted test call + Retell API health check into existing fleet-health alerting | Sage autonomous |
| O2 | No failure fallback — if Retell/LLM dies mid-call, caller gets dead air; no forward-to-voicemail/owner-cell fallback configured | First bad night destroys trust with customer #1 | S–M (carrier-side no-answer forwarding config + documented in onboarding) | Sage designs; per-customer config |
| O3 | No onboarding runbook — nothing documents "plumber says yes → live": intake (greeting, hours, escalation number, services, price disclosures), provisioning, forwarding setup (*61*/conditional forward), test call, go-live checklist | Every hour of Barry-time per customer is margin lost | S — Sage writes it | Sage autonomous |
| O4 | No customer-facing transcript/booking visibility — owner gets (future) SMS but no log/dashboard of calls & bookings | Churn risk; also the upsell surface | M — simple per-customer page can ride on existing owner-board demo UX | Sage |
| O5 | Cost/capacity model undocumented — Retell ≈ $0.07–0.13/min + DID + SMS; at $199/mo a chatty shop could eat margin; no per-account usage cap | Pricing safety | S — one doc + usage alert | Sage autonomous |
| O6 | Multi-tenant backend — per-client folder copies are fine for 1–5 customers; real auth/tenancy/persistence needed to scale | Explicitly listed in progress.md Missing; NOT needed for customer #1 | L — defer | Sage, later |
| O7 | Marketing site / SEO / self-serve signup — hub is demo-grade, no public pricing/checkout page | Inbound channel stays dark | M — after first paying customer | Sage, later |
| O8 | Calendar/CRM integration (real write to Google Calendar / Jobber / Housecall) | "One shared book" SKU promise; SMS-only window is acceptable v1 | M–L — defer, sell SMS-window v1 | Sage, later |
Principles: batch Barry's actions into three short sessions; everything else Sage runs autonomously with proof (burn-in, not assurances). Long-lead items (SMS registration) start on day 1. All money/brand/go-live moments ping Barry per standing rule.
| Step | What | Who | Duration | Unblocks |
|---|---|---|---|---|
| 0.1 | Add AI + recording disclosure lines to template greeting (all vertical flows), staged on demo agent for verification | Sage | 2 h | B4, Phase 3 go-live |
| 0.2 | Draft privacy policy, ToS, data-retention policy (transcripts 90 days default, recordings off by default for pilot) as hub pages, unlinked until approved | Sage | 3 h | B4 |
| 0.3 | Write onboarding runbook + customer intake form (greeting text, hours, escalation cell, services, forwarding instructions per carrier) | Sage | 3 h | O3, Phase 3 |
| 0.4 | Stand up demo-DID health monitor (scripted Retell API check + daily test web-call) wired into fleet alerting | Sage | 2 h | O1 |
| 0.5 | Write cost model (per-min Retell + DID + SMS vs $199) + usage-alert threshold | Sage | 1 h | O5 |
| 0.6 | BARRY BATCH #1 (~30 min, one sitting): (a) supply postal/mailing address for CAN-SPAM footers; (b) confirm entity name (or "sole prop for pilot"); (c) create Stripe account; (d) create Twilio account + start toll-free SMS verification (fast path) and A2P 10DLC (slow path, background); (e) authorize purchase of 1 production DID (~$2–5/mo) | Barry | 30 min | B2, B3, B4, B5 |
| Step | What | Who | Duration | Unblocks |
|---|---|---|---|---|
| 1.1 | Insert postal address into the 4 held drafts; QA pass (incl. Lead D (Houston-metro plumbing) surname check) | Sage | 30 min | B5 send |
| 1.2 | Stripe: $199/mo subscription Payment Link + webhook → notify on signup; test-mode proof first | Sage | half day | B3 |
| 1.3 | Booking persistence: Retell post-call webhook → small VPS service → store booking + owner SMS via Twilio (toll-free) ; burn-in on demo line 48 h | Sage | 1–2 days | B2 |
| 1.4 | Provision "pilot plumber" agent from plumber template on a SECOND staging config: disclosure greeting, real hours, escalation number, end-to-end test (call → booking stored → SMS received) | Sage | 1 day | B1 |
| 1.5 | Report to Barry with proof: recording of test call, screenshot of SMS, Stripe test receipt | Sage | — | Barry confidence for Phase 2 |
| Step | What | Who | Duration | Unblocks |
|---|---|---|---|---|
| 2.1 | BARRY BATCH #2 (~10 min): review 4 drafts, AUTHORIZE SEND per shop by name (Lead C (Houston-metro plumbing), Lead D (Houston-metro plumbing), Lead A (DFW plumbing), Lead B (DFW plumbing)) | Barry | 10 min | Top of funnel |
| 2.2 | Send the 4 Track A emails from Barry's Gmail (one shop per email, per held drafts); log sends; honor opt-outs ≤10 days | Sage (with Barry's send auth) | 1 h | Replies |
| 2.3 | Reply watch: Sage drafts responses within the hour, demo links + demo DID; books a live demo call slot with interested owner | Sage drafts / Barry approves sends | ongoing | Phase 3 |
| 2.4 | In parallel: run next lead batches through the existing Leads→Legal→Marketing→QA machine (Houston Track B revisit, next metro) so the funnel isn't 4 emails deep | Sage | ongoing | pipeline depth |
| Step | What | Who | Duration | Unblocks |
|---|---|---|---|---|
| 3.1 | BARRY BATCH #3: the human close — one phone/email exchange with the interested owner; take the yes | Barry | ~30 min per prospect | Contract |
| 3.2 | Customer pays via Stripe link → Sage provisions: buy their DID, clone plumber template with their greeting/hours/escalation, disclosures on, monitor on | Sage | half day | Live service |
| 3.3 | Customer sets after-hours conditional forwarding (from our one-pager); joint test call; Barry pinged at go-live (brand/live rule) | Customer + Sage | 1 h | Live |
| 3.4 | 48 h burn-in: monitor every call, Sage reviews transcripts daily, fallback verified; then declare customer #1 LIVE with numbers, not assurances | Sage | 2 days | Proof |
Multi-tenant backend + auth (O6) · owner dashboard (O4) · calendar/CRM write (O8) · marketing site/SEO/self-serve checkout (O7) · scale outreach beyond hand-held sends.
Barry's total footprint to customer #1: three batches ≈ 70 minutes + one sales conversation. Everything else is Sage, with proof at each gate.
Works today: Retell voice agent live on demo DID · 7-vertical demo hub · pricing set ($199/mo) · 4 legally-cleared outreach drafts HELD · deploy + daily-beat ops.
Blockers: (1) no per-customer number/agent provisioning · (2) booking SMS + storage are stubs — core promise not real · (3) no live Stripe · (4) no AI/recording disclosure, no privacy/ToS, no postal address · (5) SEND gate closed.
Order: Sage prep (disclosures, policies, runbook, monitor) → Barry 30-min batch (address, Stripe, Twilio, DID auth) → Sage wires SMS+storage+billing, proves it on staging → Barry authorizes 4 sends → replies → Barry closes one → Sage provisions → 48 h burn-in → first paying customer. ETA ≈ 2–4 weeks, gated mostly by email reply rate.
Web-version note: specific lead business and owner names are redacted here to
“Lead A–K (metro, vertical)” labels. Full names live in the private repo registry
(agents/leads/leads-data.json) and the live leads pipeline.
Generated 2026-09-20 07:12 PT from receptionist/docs/production-readiness-2026-09-19.md by
bin/publish-docs.py. Republish: python3 ~/apex/bin/publish-docs.py
then rsync docs/ per COS-DEPLOY.md. Never Fuller.