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.
| Field | Meaning |
|---|---|
| initial_silence_ms | How long the line was quiet after answer |
| first_speech_ms, first_utterance_ms | When speech started and how long the first burst lasted |
| second_speech_ms, total_speech_ms | When a second burst started, and total speech heard |
| energy_mean, energy_peak, energy_var | Three loudness statistics over the listening window |
| beep_ms, tone_sit, tone_fax | Whether and when a beep or a network tone was heard |
| score_person, score_machine, score_screener, score_silence, score_music | Five class scores between 0 and 1, computed on your server |
| nonce, extractor_version, channel_count | A 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