Security and privacy

Built so there is little to protect.

AMDSure is designed around one rule: the sound of your calls stays on your server. What crosses the network is a short list of numbers. Here is that list.

What the extractor sends

About 300 bytes per answered call, once, over TLS. Every field is a number or a yes or no.

FieldMeaning
initial_silence_msHow long the line was quiet after answer
first_speech_ms, first_utterance_msWhen speech started and how long the first burst lasted
second_speech_ms, total_speech_msWhen a second burst started, and total speech heard
energy_mean, energy_peak, energy_varThree loudness statistics over the listening window
beep_ms, tone_sit, tone_faxWhether and when a beep or a network tone was heard
score_person, score_machine, score_screener, score_silence, score_musicFive class scores between 0 and 1, computed on your server
nonce, extractor_version, channel_countA one-time request value, the extractor build, and how busy the box is

Early access schema. Field names may change before general availability; the published schema will always match what the extractor sends, and you can log the payload on your own box to check.

What it never sends

None of these are part of the protocol, so there is no field to carry them.

  • Audio, in any form or at any quality
  • Spectrograms or other data that can be turned back into sound
  • Transcripts or words
  • Phone numbers or caller ID
  • Names, addresses or lead data
  • Recordings, ever

Answers you can trust

Signed and bound to the request

Every verdict is signed with our private key and carries the one-time value from its request. The extractor checks both. A forged, altered or replayed answer is thrown away, and the call falls back to the built-in AMD().

Fails open

The extractor waits for us only until a hard deadline. On a timeout, a network error, a bad signature or any fault of ours, your dialplan gets the result of Asterisk's own AMD(), the same as it would without us. We never answer "voicemail" because something went wrong.

Regions

Decisions run in the East region today. Central and West are planned. The extractor talks to the closest healthy region and moves to the next one on its own.

What we keep

For your dashboard we keep one record per verdict: an opaque call reference that your side hashes before sending, the time, the verdict and its reason, the decision time, and, if you send them, the built-in AMD() result and your own outcome label. That is enough to compute your error rates. It is not enough to identify a person.

Client API keys are shown once and stored only as keyed hashes. Console and portal sign in needs a password and an authenticator code, with sessions that expire and cookies that only our own pages can use.

Consent and recording law

AMDSure does not record calls or transmit their content. Your own obligations for consent, recording and abandoned call rules stay with you, and AMDSure does not change them. We are happy to walk your counsel through the design.

Questions about the design? Ask us on a call.

A 20 minute call. We show the console with live numbers, then set up shadow mode on your dialer so you can judge for yourself.

Request a demo