Trust · Calling rules

Data, consent and calling rules

callerlab places real phone calls with a synthetic voice. The harness enforces the mechanics: allowlist, denylist and dry runs by default. Getting legal consent is still your job. This page restates docs/SAFETY.md and is not legal advice.

Calling rules

Five rules. The harness enforces the allowlist and denylist; the rest are yours to follow. Copy them into your project’s README.

  1. Live dials go only to allowlisted numbers

    List only numbers you own or have written permission to test, in CALLERLAB_DIAL_TO or CALLERLAB_ALLOWED_DESTINATIONS. That is your representation that you may call them. Dry runs describe any well-formed, non-denylisted number; live dials need the allowlist.

    Enforced by the harness
  2. Get prior express consent (FCC 24-17: AI voices are “artificial”)

    For callerlab tests, get prior express consent from the person or organization being called. Consent from whoever is operating this tool is not enough. Disclose that the caller is synthetic where disclosure is required (some TTS providers’ usage policies require it).

    Yours to follow
  3. Get recording consent when recording a call

    Recording is off by default. With explore --transport stream --record, callerlab saves a local two-channel WAV in the run folder; Twilio records nothing. Dashboard Send and Gather calls do not record. Some states and countries need everyone’s consent before recording. Get it in writing when required, or end the call when a person answers. See docs/consulting-recording-consent.md.

    Yours to follow
  4. Escalation and transfer techniques are test-target only

    urgent-escalation, live-transfer, warm-transfer, human-handoff, escalating-frustration, knowledge-honesty-under-pressure can page or put a person on the line. Run them only against staging targets you control. The allowlist does not control where the agent transfers next.

    Yours to follow
  5. Denylist always wins

    The denylist cannot be overridden: a number on it is never dialled, and a press that is exactly one of its emergency numbers is refused. In an English or Spanish menu, a key it reads as offered for emergency services is refused as a menu choice for the rest of the call. A menu it mishears or doesn’t recognise, and keys spread over separate prompts, can still leave an emergency key open: test against numbers you own. The full rules and the accepted cases are in docs/LIMITATIONS.md.

    Enforced by the harness

Where data goes

Self-install sends no telemetry to callerlab and never routes through a callerlab server.

  1. Your machine

    .env keys.cache/ runs & recordingsUnencrypted, like any dev tool

  2. Twilio

    Call audio & SIDYour accountNo provider recording

  3. Caller / judge model

    Transcripts & goalsNumbers as heardMasking does not change this

  4. TTS / STT

    Lines you send, audio to transcribeDefault voice: Microsoft Edge, online, no keyOther providers: your keys

  5. Hosted (planned)

    Only if you choose itRuns, reports, ledger, encryptedcallerlab-provided line and models

Masking

  • Reports, summary.json, junit.xml, terminal and dashboard mask phone numbers
  • --unmask changes only written and printed output, never what a provider receives
  • Keyed PINs are blanked in rendered reports and text downloads; raw local run files may retain them
  • Audio is not redacted
  • Numbers spoken as words are never masked
  • explore prints your --goal as you typed it, and the dashboard shows a report stored with --unmask unmasked

Retention

  • Local: no default retention period or delete command yet
  • voicebench run logs (LLM, TTS, STT): not published

Corrections and this website

Corrections and right of reply

How errors on the benchmark get fixed, and who sees results first.

  • Verified factual errors anywhere on the benchmark are corrected and logged
  • Conflicts are disclosed in the benchmark methodology. No result is ever a paid placement.

Found an error? Request a correction: support@callerlab.ai.

This website

What callerlab.ai itself collects, separate from the CLI.

  • No analytics, no tracking and no cookies
  • Two preferences stay in your browser’s local storage and are never sent: that the fonts have loaded, and your pause-motion choice if you make one
  • Every font and script is served from this site; nothing loads from a third party
  • The waitlist form sends your email address. The inquiry form sends your name, email, company, topic and its label, message and whether you ticked its consent box. Each also names the form.
  • Where a connected form’s submissions are stored, and for how long, is not described here yet
  • Our host, Vercel, keeps standard request logs

Test your agent, by these rules

Start with a dry run: it prints the plan and its price and dials nothing.