Thames Valley Gifts — Voice Line Provisioning Request
Requested by: WP6 (AI front desk) build, 2026-09-28. Owner of execution: voice-agent-engineer
agent only, per knowledge/runbooks/voice-provisioning.md — this request does not authorize any
voice deploy or SIP trunk change, and WP6 has made none.
What to provision
| Field | Value |
|---|---|
| Number type | Local, area code 519 or 226 (Southwestern Ontario) — not toll-free (knowledge/acceptance/tvg-ai-front-desk.md §8.1 DECIDED 2026-09-28). |
| Persona | Existing generic local_business persona — no new prompt code, no gift_shop vertical (that is Phase 3, deferred, and requires a full voice deploy + independent QA + founder go). |
| Business tenant | The TVG local_businesses row — vertical='other', business_name='Thames Valley Gifts', slug='thames-valley-gifts', metadata.internal_brand='tvg'. NOT YET CREATED as of this writing — WP6 ships an idempotent, NOT-YET-APPLIED data-only seed migration (churchwiseai-web/migrations/20260928_tvg_frontdesk_local_business_seed.sql + its rollback) awaiting founder/orchestrator confirm-before-prod-write. Apply that migration (or otherwise create the row) BEFORE provisioning the DID, since local_business_voice_lines.business_id is a foreign key into it. |
| Greeting | welcome_greeting must render "Thames Valley Gifts" exactly, producing the persona's standard 5-clause greeting shape (tvg-ai-front-desk.md §2.2): "Thanks for calling Thames Valley Gifts — I'm their AI assistant, and this call is written down for the team. If this is a life-threatening emergency, please hang up and call 9-1-1. Otherwise, I can answer a few questions or take a message so the team can get back to you." Say "written down for the team", never "recorded" — matches the current persona code (2026-08-17 correction), not the older approved copy in ai-front-desk.md §V1. |
| Forwarding at cap | forward_to_number = the founder's mobile number (tvg-ai-front-desk.md §8.1 DECIDED 2026-09-28 default). Confirm the actual number with the founder before setting it. |
calls_limit | OPEN — no default given. Ask the founder for the monthly cap before provisioning; a reasonable starting point mirrors other low-volume internal lines, but this spec deliberately left it undecided rather than guessing. |
recording_enabled | Per the persona's "written down, not recorded" language (§2.2), this should be transcription, not audio recording — set consistently with how other local_business persona lines are configured today; do not introduce a new recording behavior for TVG specifically. |
| Multilingual | OPEN — no default given (tvg-ai-front-desk.md §10, §13 item 5). Ask the founder whether to opt the TVG line into the master multilingual-voice flag before enabling it; default is OFF (no opt-in) until told otherwise. |
| Google Business Profile | This will also be the number listed on the TVG Google Business Profile (per ai-company-os/brands/engraving/BRAND.md's "GBP needs its own phone line" note referenced in the acceptance spec) — flag to the founder once live so GBP can be updated. |
What the persona will answer from (no code changes needed)
local_business_setup_profiles for the TVG business row — hours, services, faqs,
forbidden_claims, brand_voice. WP6 ships scripts/tvg-sync-setup-profile.mjs, an idempotent
sync script (dry-run by default, --confirm to write) that populates these fields from the live
tvg_products/tvg_makers catalogue plus the shared AI fact sheet
(src/lib/tvg/ai/fact-sheet.ts — the SAME module the chat route's system prompt reads, so voice
and chat can never answer differently). Run it once the local_businesses seed row exists, before
or shortly after the DID goes live, and re-run it after any catalogue/policy change.
urgent_rules is intentionally empty — a gift shop has no service emergencies (§8.1).
What this request does NOT ask for
- No change to the LiveKit SIP trunk (
ST_Xa3Bp9aixRFP) — untouched. - No new voice-agent Python code, no new vertical, no prompt changes to
verticals/local_business/prompts.pyordata.py. - No
lk.exe agent deploy— this is DID + DB-row provisioning only, on the existing multi-tenant agent deploy that already serves every otherlocal_businesstenant.
Verification after provisioning (voice-agent-engineer + independent QA)
Per knowledge/acceptance/tvg-ai-front-desk.md §12 "Voice scripts" V1–V9 — call the number and check the greeting (V1), a shipping/return FAQ answer (V2), a captured lead (V3), one-click promotion to an order request (V4), the memorial hand-off shape (V5), the crisis protocol (V6), the payment refusal (V7), an AI-knowledge-sync price change round-trip (V8), and — most importantly for the paying-customer smoke test — that an existing real church voice line is unaffected after TVG provisioning (V9). V9 is non-negotiable before calling this done: it is the paying-customer smoke this exact kind of change is required to pass (CLAUDE.md Verification Ladder step 3b).
Founder approvals still needed before this can be executed
- Confirm-before-prod-write on the
local_businesses+local_business_setup_profilesseed migration (see the migration file's header). - The founder's mobile number for
forward_to_number. - The
calls_limitthreshold. - Voice multilingual opt-in (yes/no).
- A go-ahead for the voice-agent-engineer agent to actually provision the Telnyx/LiveKit resources
per
knowledge/runbooks/voice-provisioning.md.