11
Live

Voice

Connect your Twilio account, import a number, load a prospect list, click Run. Kernel dials, transcribes live, detects objections, suggests the answer. Everything stays on your Twilio account (BYO).

Overview

Voice is BYO Twilio. You keep control of your subaccount, your regulatory bundles, your Twilio billing. Kernel orchestrates on top : dialer, scripts, dispositions, transcripts, AI coaching, analytics.

Architecture is simple webhook : no SIP trunk, no proprietary softphone. The number rings, Twilio hits your Kernel webhook, Kernel replies with TwiML, the call is routed into the browser via Twilio Voice SDK. You talk through your mic, listen through your headphones.

GDPR/CNIL compliance built-in : recording disclosure auto-played on the prospect leg, DTMF 9 for opt-out + DNC list, configurable recording retention (30 to 365 days), Twilio Ireland (IE1) region recommended for EU data.

What the module does

BYO Twilio (Bring Your Own)

You connect your own Twilio account in /settings/voice. Kernel does not bill minutes : you pay Twilio directly. Kernel only bills the overlay (AI coaching, transcription, storage). Disconnect any time.

  • Account SID + API Key Sid + Secret (you create the API Key in Twilio Console)
  • Region : ie1 (Ireland) recommended for GDPR
  • FR National Business regulatory bundle required to buy 09 numbers (B2B cold outbound)
  • TwiML App auto-created by Kernel (one click in the BYO panel)

Automatic webhook configuration

You do NOT manually configure webhooks on Twilio Console. On import, Kernel PUTs to IncomingPhoneNumbers and sets : VoiceUrl, VoiceMethod, StatusCallback, StatusCallbackMethod, VoiceApplicationSid.

  • VoiceUrl : https://kernel.freelance-os.fr/api/voice/voice-app/connect
  • StatusCallback : https://kernel.freelance-os.fr/api/voice/webhooks/status
  • HTTP method : POST on both
  • VoiceApplicationSid : linked to workspace TwiML App

In-browser dialer (Voice SDK)

No native app to install. Open /voice/run in Chrome or Safari, the Twilio SDK registers, your mic and headphones become your phone. WebRTC under the hood. Bluetooth-compatible.

Scripts and live objection detection

Define opener scripts, recurring objection responses, closing scripts in /voice/scripts. During the call, the current-phase script renders with variable interpolation (firstName, company, etc.). Objections are detected by AI in real time and the response is surfaced to you.

Dispositions and pipeline

After each call, you set a disposition (Connected/Voicemail/No answer/Wrong number/DNC/Booked, etc.). Dispositions are configurable per workspace. Transcripts and dispositions flow into the CRM and /voice/analytics.

Analytics and coaching

KPIs at the top (calls, contacts, bookings, talk time), funnel by disposition, hour heatmap, talk ratio (are you talking too much), top performing openers, top failing objections. AI coaching suggests script tweaks based on outliers.

Quotas and billing

Voice is included in Pro and Agency plans. Monthly quotas : outbound minutes, transcription, AI coaching. The /settings/billing/usage page shows the breakdown with a serviceGroup filter to isolate voice.

How to use it

  1. 01

    Create your Twilio account

    Go to twilio.com/try-twilio. Work email + personal phone for 2FA. When asked for Region, pick Ireland (ie1) if you are in Europe. Top up $20 minimum to unlock number purchases.

  2. 02

    Create your FR National Business Regulatory Bundle

    Twilio Console > Phone Numbers > Regulatory Compliance > Bundles > Create. For France and B2B cold outbound : Country=France, Number Type=National (covers 09), End User Type=Business. Upload Kbis + company address. Approval takes hours to 2 days. Save the Bundle SID (BUxxx).

  3. 03

    Buy a number

    Console > Phone Numbers > Buy a number > Country=France, Type=Local. Select the bundle from step 2. Assign your address SID. Confirm. Typical cost : ~$1.35/month + ~$0.013/min outbound. Note the PN SID (PNxxx) from Active numbers.

  4. 04

    Create a Twilio API Key

    Console > Account > API Keys & Tokens > Create API Key. Type=Standard. Region=Ireland if applicable. Copy SID (SKxxx) and Secret. WARNING the secret only shows once.

  5. 05

    Connect Twilio to Kernel

    Open /settings/voice in Kernel. BYO Twilio tab. Paste : Account SID (ACxxx), API Key SID (SKxxx), API Key Secret. Region=ie1, Edge=dublin. Click "Test connection" then "Save". Click "Auto-create TwiML App" : Kernel builds the app with the right webhooks and links it to the workspace.

  6. 06

    Import the purchased number

    Still on /settings/voice. Click "Provision a number" > Import step (auto-selected for IE1 accounts). Paste the PN SID (PNxxx) + label (e.g. "Cold outbound FR"). Click Import. Kernel fetches the number, sets webhooks via API, persists in DB. The number shows up with status=active.

  7. 07

    Configure dispositions and scripts

    Go to /voice/scripts. Create at least : 1 opener script, 3 responses to top objections, 1 closing script. Use {{firstName}} {{company}} variables for personalization. Visit /voice/settings to validate default dispositions.

  8. 08

    Load your prospect list

    Go to /voice/lists > Create list. Either upload a CSV (e164, first_name, last_name, company), or pull from CRM (filter by tag or stage). The system dedupes against DNC automatically.

  9. 09

    Launch your first call

    Open /voice/run. Pick the list, accept browser mic/headphones permissions. Click Start. Dialer rings, consent announcement plays, you hear the prospect. ScriptPanel shows the opener. Talk. On objection, the Live Signals banner pops with the suggested response.

  10. 10

    Measure and iterate

    After 20-50 calls, go to /voice/analytics. Watch talk ratio, top opener, objections that block you. Tweak your scripts. Run another session. Iterate.

Preview

Voice settings with BYO panel
Voice settings with BYO panel
In-call dialer with ScriptPanel
In-call dialer with ScriptPanel

Routes in Kernel

  • /settings/voice
  • /voice/run
  • /voice/lists
  • /voice/scripts
  • /voice/analytics
  • /voice/settings

Connections