Skip to content

Consumer Cellular voice demo

Status: Current | Last reviewed: 2026-10-05

The current Vanguard draft retains the user's selected ElevenLabs Claire voice (A9hvW90SK1w1iyI1xxf9, Text to Dialogue / eleven_v4_turbo), with GPT Live native output disabled. The archived fourth example uses native Gleam; replaying that audio does not change the draft's voice selection.

Listening guidance permits brief reactions during personal anecdotes, but waits through billing, thanks, relief, and goodbyes. In particular, 'You’re welcome' is a full reply after the caller finishes, not an overlapping backchannel. Closing guidance forbids spoken progress such as 'holding the line'.

A fresh ElevenLabs-Claire verification (f51215a3-a14d-4dfb-bf7a-2bbbeb3e12b9) retained the whole payment answer in one caption and ended with one farewell, without holding-line narration. The caller’s thank-you audio ended at 61.114 s; the first welcome-response audio arrived at 63.061 s (about 1.95 s later). One native [mouth noise] caption remained before the farewell without a corresponding TTS audio burst. These are observations of one generated call.

The October 5 draft adds Closing voice policy: no preliminary "bye" or listening acknowledgment once the caller starts leaving. Live silently delegates call control, speaks the backend's single closing line, then remains silent through disconnect. This addresses a captured run with a native "Bye" immediately before the tool-backed farewell. It is prompt guidance, not a guarantee imposed by an audio filter. Test fresh speech when changing it.

Fresh local Mock Caller verification on October 5 (43909739-ad63-4132-a981-2958c4ae584e) produced four distinct caller turns, one accepted end_session, and one final farewell. The granddaughter story retained its provider start before the agent's reactions despite arriving late. This verifies that sample; it does not guarantee every generated conversation.

Repeat requests now delegate transcript retrieval to the backend, including social replies spoken directly by the native voice. The voice repeats that complete response and its question once; retrieval does not repeat a billing lookup. This candidate addresses the September 30 runs that substituted an older billing answer or a new reaction for the caller's requested gardening reply. Warm anecdote backchannels remain enabled. Qualification must use fresh runs. The next candidate explicitly excludes short acknowledgments such as "Very nice" and joins adjacent caption fragments when retrieving that response.

Use this runbook to install and rehearse Claire, a Consumer Cellular voice assistant that confirms a sample AutoPay payment and welcomes caller-led small talk. The demo uses synthetic Salesforce-style records in local Vanguard.

Unavailable-data test callers ask about a next step once, then explicitly choose to try later and close. Their earlier persona insisted on obtaining unavailable payment information until the harness turn limit, without choosing an ending. The new case revision keeps every disclosure, honesty and caller-controlled termination assertion. Earlier failed runs remain archived. The voice prompt also avoids announcing a new lookup when only repeating an explanation and remembers when the caller declines representative help.

The September 30 repeated run found an omitted pending balance and two missed repeat requests. The backend now includes AutoPay state, pending amount and balance due in the initial pending answer. The shorter voice instructions preserve those facts and repeat the last substantive response, excluding intervening listening acknowledgments. This candidate requires a new qualification run; earlier failures are retained.

Installed assets

The initial installation in the TrueServe tenant creates voice draft 4451, Consumer Cellular — A little peace of mind, and published startup workflow 1851, Consumer Cellular — caller recognition. The workflow must be published for the draft's lifecycle hook to run. Vanguard now has voice release 1 and a separate draft. The latest conversation-guidance changes apply to the draft. No public phone number or CCaaS route is assigned.

Agent Studio classifies this demo with pipeline_type=speech_to_speech and subtype=voice_agents on both the agent identity and its version rows. The original installer used voice / conversation, which displayed a generic Agent label and excluded it from the Voice filter. The installer now uses the canonical constants, and listening-guidance updates preserve classification. To repair an existing owned installation without replacing its prompts, tools or published configuration, run:

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/repair-classification.ts

The repair backs up the rows, changes only classification metadata, verifies that runtime configs and publication state are preserved, and checks that the repository returns the demo as Voice Agent under the Voice filter.

The voice stage uses OpenAI GPT Live 1, Gleam, client delegation through OpenAI Responses and GPT-6 Luna with low reasoning effort. OpenAI's voice guide lists Gleam as natural, feminine and North American English. This is a match to the requested presentation, not a comparative voice-quality benchmark.

The backend explicitly selects the tenant OpenAI integration. That preserves its configured Responses base URL (https://us.api.openai.com/v1 on Vanguard), as well as its credentials. Selecting only inherited Live credentials caused a regional-hostname rejection during rehearsal. Managed delegation also reported an upstream Responses gateway timeout. No shared integration settings or runtime code are changed.

This demo sets delegation_on_user_turn=false: the native voice handles ordinary conversation and requests backend work for billing, corrections, repetition and call control. During September 30 recording checks the saved draft had automatic delegation enabled. Both the native voice and the backend then answered thanks and anecdotes, producing duplicated reassurance and reactions. The guidance updater now disables that option for this demo. It preserves the saved backend result-reinforcement setting. Rehearsals explicitly select 4451:draft. The resolver's allow_draft=true permits draft access but a bare 4451 still selects its published release. The first adaptive trials therefore exercised release 1, including its older backchannel instructions and automatic delegation. They do not qualify the new draft guidance. The harness now records the resolved draft version and configuration hash before opening each session.

Two saved tools run generated, sandboxed sample functions:

Tool Purpose
cc_salesforce_lookup_by_ani Find a unique fictional Contact and Account before the greeting.
cc_salesforce_check_payment Read the sample September 2026 bill and AutoPay outcome.

The synchronous lifecycle.on_start workflow maps incoming ani into the lookup. Its declared cc_* outputs become startup merge fields. Only a matched result enables a named greeting. Blank, unknown, ambiguous and unavailable results have empty identity fields.

The payment action binds both ani and account_id from trusted session context before tool validation or dispatch. The Account comes from the startup workflow's cc_account_id; the model cannot supply or invent it. The sample tool also validates that Account against the ANI. A mismatched account returns no bill, and missing startup identity returns unavailable without requesting an internal record ID from the caller. Lifecycle outputs live in prompt metadata, so they are not used as variable-store gate inputs. The voice instructions delegate identity corrections and billing questions to the backend; a wrong-person correction must stop disclosure of the matched sample account.

ANI recognition is not authentication for real customer billing. This installation has no real Salesforce connection and collects no payments. Connecting live records requires replacing the sample implementations, removing config.mock, mapping the actual Salesforce billing schema, and applying the tenant's supported identity and account-access gates. No client identity policy or billing schema is invented here.

Install

From the repository root:

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/install.ts

The installer resolves the tenant's active OpenAI integration, executes all 17 fixture examples in code-executor, validates the generated config shapes, and saves only this demo's assets. It refuses to adopt unrelated same-name assets. An existing owned draft is backed up before replacement. Re-running publishes a new version of its lookup workflow and resets the draft's collaboration room.

Installation identity and verification evidence are stored in .local-data/consumer-cellular-demo. Keep installed.json when reinstalling; it records asset ownership. The default tenant is TrueServe. CONSUMER_CELLULAR_TENANT_ID is available for a separate installation, but the script refuses to switch tenants under an existing ownership record.

No service definitions, schemas or application routes change; derived API specifications do not need regeneration.

Update listening guidance

Claire's Backchannel policy asks for friendly, responsive listening: brief, clearly audible reactions such as “Nice”, “Very nice”, “Oh, lovely” and “That's sweet” in clear quiet gaps between phrases, without speaking across the caller's words. Usually one acknowledgment during a thought is enough; it must not grow into an observation or question while the caller continues. Longer comments and questions wait for the whole thought to finish. Coughs, apologies and pauses inside a story do not hand over the turn. Claire yields when the caller resumes, including during an acknowledgment.

Billing-to-conversation transition gives the original request its own wrap-up: confirm the bill, answer any clarification, acknowledge relief, then pause. The caller introduces the personal subject. The voice, interruption, transition and backend listening paragraphs are defined in definition.ts. Apply these paragraphs to the owned draft with:

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/update-guidance.ts

This validates and backs up the existing draft, changes the conversation guidance in the voice and backend prompts, disables automatic delegation of every caller turn, checks the saved result, and refreshes the collaboration room. Other draft configuration is preserved. For an intentionally renamed installation, set CONSUMER_CELLULAR_EXPECTED_NAME to its exact current name; Vanguard 4451 is now Consumer Cellular Support. No workflow or tool is republished. Start a new Preview conversation to hear the updated startup voice instructions.

Mock Caller settings are browser-local. Open the agent with ?mockCallerPacing=patient and open Preview to apply a 3-second reply wait and append short-turn delivery guidance to the existing caller scenario. The preset retains the selected voice, integration, call limit and recording edits, and removes itself from the URL after saving. Later manual changes remain in effect. It requests at most one brief cough when the scenario calls for coughing, with a short apology and no long mid-sentence silence.

Rehearse

Open agent 4451 in Agent Studio, select its draft, and set ani in Preview's Template Variables before starting the call. Start a new conversation after changing ANI; identity is resolved at startup.

ANI Caller Expected result
+12025550147 Margaret Wilson $42.50 received September 27, 2026; $0 due.
+12025550148 Evelyn Parker AutoPay enabled; payment pending, not confirmed received.
+12025550149 Ruth Bennett Caller recognized; billing source unavailable.
+12025550150 No unique caller Generic greeting; no billing disclosure.
+12025550151 Lookup unavailable Generic greeting; no billing disclosure.
Blank or +12025550199 No match Generic greeting; no invented name or account.

All numbers and customer records are fictional. The amounts are fixture values, not Consumer Cellular prices. Fixture dates are fixed in September 2026. The tools also accept documented national, formatted US and tel: variants of the sample numbers.

Use the presenter guide for the bill-to-small-talk script. Judge success by accurate confirmation, specific listening, comfortable pauses, respect for interruptions, and a clean goodbye when the caller chooses to leave. Billing completion or a plain thank-you must not end an ongoing conversation. Idle checks wait 60 seconds and allow two retries; there is no small-talk turn quota.

Verification

Run the actual workflow and orchestrator preflight:

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/verify.ts check

Run a real GPT Live conversation using synthesized caller audio:

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/verify.ts paid-chat

Other rehearsal names are pending, unavailable, unknown, wrong-person and scope. These call the real provider and use the real orchestrator, lifecycle workflow and sample tool executor. They use no PSTN route or real customer record. Every rehearsal and preflight pins the owned agent's :draft reference rather than relying on draft permission alone. The harness resamples caller audio to the negotiated format and sends continuous silence between turns. It retains timestamped messages, wire events, audio and failed attempts.

The harness checks session survival during the supplied conversation and termination after goodbye. Review the actual spoken messages for factual accuracy and conversational quality; a completed harness run alone does not grade those properties. These are scripted rehearsals, not saved Performance evaluation results.

Verified on September 29, 2026: 17 sample cases, 8 live lifecycle cases, and orchestrator preflight passed without errors or warnings. Targeted ESLint and TypeScript checks passed for the demo scripts.

The following real voice rehearsals completed and their durable transcripts and tool results were reviewed:

Rehearsal Observed outcome Conversation
paid-chat Named Margaret greeting; one successful bill lookup; exact $42.50 and September 27 confirmation; three exchanges about her granddaughter and tomatoes; native end-session only after goodbye. 51bd457c-1232-42d9-bb4f-3bf18667e538
pending Named Evelyn greeting; pending sample result; receipt remained unconfirmed when the caller asked again; native end-session after goodbye. e61c800e-c7ef-487c-8103-2e44d7d21274
scope Confirmed the bill, declined an appointment booking, then engaged with the caller's roses story; no booking action; native end-session after goodbye. 0dbc56f9-e10f-425e-bfe9-f09a6fd626ca

Exact delivery varies. The final paid rehearsal briefly referred back to billing during the story, but continued listening. An earlier rehearsal produced an extra apology during closing; this did not recur in the final paid or scope runs. Include the goodbye in a presenter mic check. Unavailable and unmatched outcomes have executor/lifecycle coverage; their spoken variants and the wrong-person correction remain optional rehearsals.

Recorded MP3

record-chat uses the tenant's ElevenLabs integration for the synthetic caller and the saved GPT Live agent for every agent response. Carol (5u41aNhyCU6hXOcjPPv0) was listed in ElevenLabs' public catalog as an older American female voice on September 29, 2026. The caller uses eleven_v4; Claire keeps GPT Live / Gleam. No voice cloning or shared voice settings are involved.

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/verify.ts record-chat
python apps/ai-manager/scripts/consumer-cellular-demo/render-recording.py .local-data/consumer-cellular-demo/record-chat-<timestamp>.json

For a second example, add --name consumer-cellular-live-call-2 to the renderer command. Every exported file uses that basename, preserving the first MP3, source audio and edit manifest for comparison.

The recording command caches the five ElevenLabs caller clips, streams them into a new real session, and captures both directions with packet timing. Select the completed evidence filename printed by that command. The renderer requires Python, NumPy, SciPy and FFmpeg. If FFmpeg is not installed, the local fallback can be prepared with python -m pip install --target .local-data/consumer-cellular-demo/python imageio-ffmpeg.

The renderer writes consumer-cellular-live-call.mp3 in .local-data/consumer-cellular-demo/exports, plus a WAV, transcript, edit manifest and untrimmed stereo source (Claire left, Margaret right). It checks that the call completed and the payment tool returned the expected received result. It trims only gaps where both tracks are quiet: gaps over 1.8 seconds are shortened to 0.9 seconds, with a short opening and closing pad. Shorter pauses, speech, backchannels and overlaps are preserved. Voice levels are matched and the MP3 is normalized to -18 LUFS at 192 kbps. The MP3 is decoded again to check duration and clipping.

This is a recording of actual agent behavior with a synthesized caller and mock customer records. The trimmed MP3 is a presentation edit, not evidence of the service's original response latency. Raw audio, timestamps and every retained source interval remain available alongside it.

The September 29 export uses conversation 87048593-78d5-46e2-8919-30bf3764662e. It runs 1:45.74, trimmed from 2:07.22 by removing 21.48 seconds of silence. Six internal long gaps were shortened. The MP3 decoded successfully without clipping; a transcription of the exported audio confirmed both speakers, the amount and receipt date, the gardening conversation and the goodbye. Failed recording attempts remain separate and are not part of the export.

The second export, consumer-cellular-live-call-2.mp3, uses the updated backchannel guidance in conversation 2e61e1c2-c8b9-40d5-835e-74c5ff903f69. It runs 1:36.14, trimmed from 1:54.89. The same cached Carol clips make the two examples comparable. The live agent said “Oh, lovely” and “Nice” during the tomatoes anecdote, “That's sweet” during the garden-candy story, and “Very nice” and “Oh, wonderful” during the porch story. First reactions occurred 6.55, 3.81 and 3.28 seconds into those caller clips, before the caller finished. Both the payment action and native end-session completed successfully. The exported MP3 passed decoding, clipping and spoken-content checks, and the first MP3's file hash remained unchanged.

Directed elderly caller

record-elderly adds ElevenLabs v4 performance cues to Carol's caller audio. caller-performance.ts keeps the intended spoken text separate from the tagged synthesis input. The direction is warm, friendly, gently textured and unhurried, with two brief coughs and spoken apologies across the call, plus a small chuckle in the happy anecdote. These are vocal events generated within the caller clips, not added sound effects.

The request uses eleven_v4, Stability 0.45 and Similarity 0.8, with inline audio tags such as [coughs softly], [apologetic] and [warmly]. V4 delivery uses tags and punctuation; no Speed setting or SSML is sent. See ElevenLabs' v4 guide and prompting guidance. Tags are performance requests, so review the actual sound before presenting.

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/audition-caller.ts
bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/review-audio.ts <audition.wav>
bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/verify.ts record-elderly
python apps/ai-manager/scripts/consumer-cellular-demo/render-recording.py .local-data/consumer-cellular-demo/record-elderly-<timestamp>.json --name consumer-cellular-live-call-3

The audition saves a WAV and its synthesis directions under auditions. The call reuses the exact cached first clip and generates the remaining directed turns. Cache keys include the delivery profile, preserving the plain caller clips used in earlier examples. The capture records the selected performance and tagged inputs; the transcript displays the spoken text.

review-audio.ts sends the actual WAV or MP3 to an audio-capable model and saves its qualitative review beside the file. It checks actual coughs, apologies, warmth, pace, spoken direction tags and artifacts. This is an automated audio assessment, separate from transcript verification or human listening. A spoken “excuse me” alone does not establish that a cough was generated.

The September 30 audition lasted 10.96 seconds. Its audio review detected a brief cough before “Oh, excuse me,” a warm and unhurried delivery, and no spoken direction tags or audible artifacts. The exported sample is consumer-cellular-caller-audition-3.mp3.

The final directed call is conversation e2623d1a-43d5-41eb-996c-63453fbec4de, exported as consumer-cellular-live-call-3.mp3. It runs 1:29.17, trimmed from 1:56.39 by removing 27.22 seconds of silence. The payment lookup and native end-session completed successfully. The exported-audio review detected both brief coughs and apologies, a warm and unhurried caller performance, and no spoken direction tags or audible artifacts. MP3 decoding and clipping checks passed. The first two MP3s retain their original file hashes.

The harness now gives the caller a four-second listening pause after each clip finishes, in addition to waiting for agent audio to settle. A backchannel during the caller's story no longer satisfies the response check: a spoken response must arrive after caller playback ends. The earlier four-second delay alone still advanced on an in-story “Mm-hm”, causing the next caller line to collide with Claire's later full response. Playback now tracks the queued audio duration as well as packet arrival. This harness pause is included in raw evidence and shortened only during the presentation edit. Exported transcripts collect complete live captions, including fragmented greetings and farewells delivered during native session shutdown.

AI caller with streaming ElevenLabs v4

record-adaptive uses GPT-6 Luna as Margaret's caller AI. It receives only the persona, Claire's actual spoken captions, its own previous replies and private direction. It receives no expected bill amount, receipt date, fixture outcome or tool result. Each utterance is generated during the call and answers Claire's latest question. The caller reads live captions rather than analyzing Claire's raw audio.

bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/verify.ts record-adaptive
python apps/ai-manager/scripts/consumer-cellular-demo/render-recording.py .local-data/consumer-cellular-demo/record-adaptive-<timestamp>.json --name consumer-cellular-live-call-4
bash .devcontainer/scripts/with-env.sh apps/ai-manager/node_modules/.bin/tsx --tsconfig apps/ai-manager/tsconfig.json apps/ai-manager/scripts/consumer-cellular-demo/review-audio.ts .local-data/consumer-cellular-demo/exports/consumer-cellular-live-call-4.mp3 --conversation

streaming-caller.ts generates and validates one caller utterance from Responses, then sends its words and vocal directions together to ElevenLabs' /v1/text-to-speech/{voice_id}/stream endpoint with model_id=eleven_v4, Carol, Stability 0.45 and Similarity 0.8. It receives PCM at the negotiated microphone rate and queues complete 20 ms frames as audio arrives, with a 400 ms opening buffer. The same continuous microphone clock sends silence while the caller thinks. The voice provider's stream and all queued audio must complete before the caller is considered finished. No complete caller recording is prepared in advance or cached for this mode. Text is generated one utterance at a time; audio is streamed before the complete audio response has arrived.

See ElevenLabs' streaming audio API. Initial dialogue-WebSocket trials accepted v4 but rejected some fragmented vocal-direction inputs as empty text. The HTTP audio stream keeps the entire utterance's cough and apology together while retaining live audio delivery. Provider failures remain failed runs; the harness does not substitute a different voice model.

Margaret has been worrying that AutoPay might not have gone through. She first settles the billing question and gives a separate thank-you expressing relief. After Claire acknowledges it, Margaret explains that now she can relax and enjoy her granddaughter's visit instead of worrying about the bill. That connection introduces the garden story. The caller uses a strict JSON response schema. Only its validated text string is sent to speech synthesis; private phase, story_complete and closing fields never reach the voice or Claire. After at least two story turns and the caller's story_complete signal, the harness privately cues a natural goodbye. It also prints a per-call .director.txt path. Write a plain-language cue in that file during the call to direct Margaret's next turn, for example:

Answer Claire's current question briefly, then explain that your granddaughter
is arriving and you need to go. Thank her for checking the bill and say goodbye.

The file is read before each caller turn. Its content goes only to the caller AI; Claire hears the resulting spoken reply. All cues are retained in local evidence. A call that reaches the 12-turn limit without a caller goodbye fails.

An in-story backchannel cannot release the next caller turn. The adaptive mode waits for speech after caller playback. Short replies such as “I'm listening” receive an extra quiet interval before the caller AI decides how to continue; they cannot deadlock the conversation just because they contain few words. If Claire continues while the caller is still generating its reply and before caller playback begins, that draft reply is discarded and regenerated from her updated words. Both voices and all overlaps remain on the original timeline; edits remove only shared silence afterward.

Evidence includes model usage, generated words and vocal directions, model-text delta and audio chunk counts, first-text/first-audio/final timing, microphone lateness, discarded replies and private cues. --conversation adds a separate audio review of transition, responsiveness, overlapping full replies and closing, instead of grading only the older caller's vocal performance.

The completed September 30 draft run is e90c4a30-b2f6-4fdd-a177-c7319cd33bdd, with evidence record-adaptive-2026-09-30T20-35-29-884Z.json. It explicitly resolved 4451:draft, with automatic delegation disabled. Its six caller utterances all began playback before the ElevenLabs audio stream finished. Synthesis used the negotiated 16 kHz microphone rate; each utterance's playback duration matched its PCM duration within 20 ms. The microphone's maximum scheduling lateness was 30.64 ms.

Margaret first expressed her AutoPay worry, thanked Claire for settling it, then said she could relax and enjoy her granddaughter's visit. She answered Claire's tomato and porch questions. A private performance cue requested the cough/apology; a later story_complete cue produced the caller's goodbye. One mock payment lookup and native end_session completed.

The export is consumer-cellular-live-call-4.mp3: 2:04.23, shortened from 3:02.61 by removing 58.38 seconds of shared silence and start/end padding. Eight long internal gaps were shortened to 0.9 seconds. Decoding and clipping checks passed. The automated review of the exported waveform found a clear billing-to-story transition, relevant answers to Claire's questions, one caller cough, a natural closing, and no problematic overlaps, clipped responses, spoken directions or audible artifacts. It detected no separate in-story backchannels in this take; Claire's full replies were warm and specific. This is evidence for one recorded conversation, not a guarantee for every live call. Earlier recordings and unsuccessful trials remain available unchanged.

Synchronized video of the approved fourth example

exports/consumer-cellular-phone-thinking-4.mp4 uses the fourth MP3’s approved voices and wording with the actual Preview phone and Thinking panels. It is a visual replay, not a new model call. Caller captions are interpolated between measured playback boundaries; agent text and mock payment/end events come from the saved source conversation. No tool is executed during replay.

The original 124.23-second MP3 is re-encoded to AAC without speech edits. The video includes a two-second ended view. Labels are Margaret, Claire and Consumer Cellular; timestamps display minutes. Its .replay.json records the source conversation, audio SHA-256, audio/video alignment, and voice distinction: archived audio uses Gleam, while the live draft retains the chosen ElevenLabs Claire voice. Audio correlation at the beginning, middle and farewell confirmed no alignment drift or clipped ending.

See also