Core Platform Suite · Subdomain: callflow.virtualofficeapps.com

CallFlow.
Real-Time Voice Playbooks & Live Teleprompter.

Enterprise live agent script studio, tabbed playbook manager, and teleprompter console. Auto-interpolates live customer variables into scripts in real time, with interactive objection response branches and automated serverless Gemini AI objection coaching.

Production Version v1.0.0-GA
Continuous Deployment Git Push Auto-Deploy
Edge AI Coaching Gemini 2.5 Flash
⚡ Interactive Playbook Simulator callflow.virtualofficeapps.com
Customer: Sarah Jenkins | Company: Apex Cloud
● INBOUND CALL
Agent Script (Live Prompt) [Warm, collaborative cadence]

"Hi Sarah Jenkins! This is Alex with Apex Cloud. Really appreciate you jumping on today—I saw you reached out exploring live guidance for inbound tech discovery."

Customer Pushback Branches (Click to Counter):
Ready to test real call flows? Open Full Studio Console →

Real-Time Teleprompter & AI Architecture

Engineered for Live Voice High-Stakes Interactions.

Traditional script tools present agents with static, unmanageable walls of text or clunky PDF files that cause awkward dead air on live customer calls. CallFlow solves this with dynamic token substitution, modular dialogue branching, and zero-latency teleprompter console controls.

⚡

Dynamic Live Variable Interpolation

Customer names, accounts, reference IDs, and playbooks are bound instantly into scripts with visual color tokens, eliminating manual copy-pasting.

🎙️

In-Browser Reference Audio & Mic Recording

Play benchmark executive call deliveries with waveform visualizations, variable playback speeds (1x, 1.25x, 1.5x), and instant browser mic recording.

🤖

Edge Serverless Gemini AI Objection Coach

Generates empathetic de-escalations, direct pivot rebuttals, and delivery cues in real time via Cloudflare Pages edge functions with intelligent offline fallbacks.

src/utils/scriptUtils.ts
// CallFlow — Dynamic Live Variable Token Parser
export function interpolateScript(text: string, vars: CallVariables): string {
  if (!text) return '';
  const scenarioVal = vars.scenario || vars.issueOrProduct || '[Scenario]';

  return text
    .replace(/\{\{CustomerName\}\}/gi, vars.customerName || '[Customer Name]')
    .replace(/\{\{Company\}\}/gi, vars.companyName || '[Company]')
    .replace(/\{\{AgentName\}\}/gi, vars.agentName || '[Your Name]')
    .replace(/\{\{(Scenario|Playbook|Issue)\}\}/gi, scenarioVal)
    .replace(/\{\{ReferenceNumber\}\}/gi, vars.referenceNumber || '[Ref #]')
    .replace(/\{\{(CallDirection|CallType)\}\}/gi, 
      vars.callDirection === 'outbound' ? 'Outbound' : 'Inbound'
    );
}