Map the call lifecycle before styling it
Start with the questions a prospect or operator needs the interface to answer:
Sales-specific events such as dialing, voicemail detection, qualification, booking, and human
handoff should stay in the application layer. Map those events to the closest visual voice state,
then explain the business event with adjacent text. A user should never have to infer “waiting for
calendar availability” from an animation alone.
Design the complete sales surface
The orb works best as the compact voice-presence layer inside a broader call experience. Pair it with the controls and information the workflow needs:- a visible call-status label and elapsed time
- explicit mute, end-call, and retry controls
- a live transcript or concise activity log
- consent or recording disclosure where required
- an obvious human-handoff action
- appointment, lead, or CRM context outside the conversation visualization
Controlled mode example
Product-specific call states rarely match a visual component one-to-one. Normalize them in one place instead of spreading conditional UI throughout the application.inputVolume and assistant playback for outputVolume. Keeping
the directions separate makes turn ownership clearer than driving every state from one generic
amplitude value.
Builder and QA workflows
A sales-agent builder should make it easy to inspect the states that are hard to reach in a happy path. Add a test surface where a developer or operator can:- step through connecting, listening, thinking, speaking, and error states
- test low, normal, and clipped audio levels
- simulate microphone denial, provider timeout, and dropped calls
- review transcript timing alongside visible state changes
- verify transfer and end-call actions without placing a real outbound call
- compare provider behavior behind the same normalized
OrbSignal
debug theme is useful during integration because it exposes normalized state and volume. Use
a production theme only after the event mapping is stable.
Failure and handoff patterns
Do not leave the orb pulsing indefinitely when a provider or tool call has stalled. Put a time limit around connecting and long-running tool states, transition toerror, and provide a labeled
retry or human-handoff action. Preserve any useful transcript and lead context when the session is
restarted.
A handoff also needs its own textual status. The voice visualization can become idle or remain
passive while the application says “Connecting you to a specialist.” This is clearer than adding
an unsupported visual state that only exists for one workflow.
Production checklist
- The visible status matches the real session rather than a timer-only animation.
- Start, mute, stop, retry, and handoff controls have text labels and keyboard focus.
- Microphone permission is requested in context and denial has a recovery path.
- Input and output volume are normalized to values between
0and1. - Long connection and booking operations time out into a useful error state.
- The interface remains understandable with animation or audio unavailable.
- Consent, recording, and outbound-call requirements are handled by the application.