Signals

What is a Signal?

A Signal turns recorded conversations into a table. You describe who takes part, what kinds of conversation to expect and what you want to know; Tavnit transcribes the audio, works out who said what, splits the recording into separate conversations and fills your columns turn by turn.

The Signal is the configuration. Each audio file you run through it produces a Wave: one execution with its own transcript, player and output table. A shop-floor recording of a whole shift can hold dozens of sales conversations; a Wave finds each one and structures it separately.

Beta, enabled on request

Signals are in beta and are enabled per organisation. If you don't see “Signals” in the sidebar, contact the Tavnit team to turn them on.

When to use a Signal

  • Checking whether salespeople mention a promotion, and which products customers ask about
  • Scoring support or intake calls against a checklist of things that should happen
  • Turning interviews into rows you can filter, chart and store in a Bucket

What you configure

Only a name and at least one member type are required. Everything else is optional and adds columns or filters to the output.

SettingWhat it does
Member TypesThe participants you expect (for example Salesperson and Customer), each with an optional description of how to recognise them. Unexpected speakers are labelled “Other”.
Interaction TypesThe kinds of conversation to capture (Sale, Support, Return…). Each detected conversation is classified as one of them, or “Other”. Leave empty to capture every conversation, untyped.
RulesYes/no checks evaluated on every turn, such as “Was the keyboards promotion mentioned?”. Each occurrence becomes a row. A rule can apply to all interaction types or only some (“Applies to”).
Extraction FieldsData pulled from every turn, such as “Products mentioned”. Each field becomes a column.
Content CategoriesEach turn is labelled with the best-fitting category, such as “objection”.
Conversation RulesYes/no checks judged once over the whole conversation, such as “Was the sale resolved?”. Each becomes a true/false column.
Conversation CategoriesClassification groups with options (for example Outcome: Won / Lost). One option is picked per group for the whole conversation.
Exclude other interactionsLeaves conversations that match none of your interaction types out of the output.
Include Wave ID columnAdds a leading Wave ID column so rows from several Waves can be joined, in CSV, webhook and Bucket exports.

Descriptions matter: the AI reads them to decide who is who and when a rule or category applies. Names must be unique within each list and can't reuse a built-in column name.

Creating a Signal

  1. 1Open “Signals” in the sidebar and click “Create Signal”.
  2. 2Choose how to start: “Conversation preset” (a sales, support or interview setup), “From an existing signal” (duplicates its full configuration) or “Start from scratch”.
  3. 3Enter a Signal Name (at least 3 characters) and define at least one member type.
  4. 4Optionally add interaction types, per-turn rules, extraction fields and content categories, then conversation-level rules and category groups.
  5. 5Under Options, decide whether to exclude unmatched interactions, add a Wave ID column or send results to a webhook.
  6. 6Click “Create Signal”. Recorders, Bucket export and the Signal ID for the API are set up on the Signal's page once it exists.

To change the configuration later, open the Signal and click “Edit” on any configuration section, then “Save”. Changes apply to new Waves; each Wave keeps a copy of the configuration it ran with.

Running a Wave

  1. 1Click “Run Wave” on the Signal's page (or on the Signals list, then select the Signal).
  2. 2Under “Upload Audio”, choose the recording.
  3. 3The Wave is queued and processed in the background. Its page updates automatically.
LimitValue
Formatsmp3, mp4, mpeg, mpga, m4a, wav, webm
File sizeUp to 150 MB
Recording lengthUp to 8 hours of audio, with at most 2 hours of detected speech

Long silences are cut before any processing, so a full-shift recording with long quiet stretches is fine. The spoken language is detected automatically. A Signal that has been deactivated can't run Waves until you activate it again.

A Wave moves from Queued to Running (“Structuring audio…”) and ends as Completed or Failed. Every Wave of a Signal is listed in its “Waves” section, with a status filter.

Reading a Wave

A completed Wave shows the duration (and how much of it was speech), the number of interactions (and how many were excluded) and turns.

  • Audio: a player for the recording, with “Download original”.
  • Conversation: the transcript by speaker and member type. Search it, show “Only extractions”, use “Play from here” on any turn, and “Export transcript”.
  • Interactions: a profile of each detected conversation: duration, turns, the longest turn, each speaker's share of the talk and categories, every extracted value (click one to jump to that turn) and the conversation-level verdicts. Excluded interactions are marked.
  • Results: the output table, filterable by interaction, with “Export CSV”, “Export JSON” and “Export to bucket”.

The output table always starts with these columns, followed by your extraction fields and conversation-level columns:

ColumnContents
InteractionWhich conversation in the recording the row belongs to.
Interaction TypeOne of your interaction types, or Other.
Turn / TimedateThe turn number and when it was spoken.
Member / Member TypeThe speaker and the member type they were mapped to.
Content / Content CategoryWhat was said and its category.
Rule / Rule CheckThe rule the row is about. Rule Check is true on the rule’s first occurrence in an interaction; a rule that never occurred still gets one row per interaction, with Rule Check false.

Recorders

Recorders are organisation members who capture sessions with the Tavnit Recorder Android app and send them to a Signal, where each one becomes a Wave automatically.

  1. 1Open the Signal and go to “Recorders”.
  2. 2Click “Add recorder” and pick the member.
  3. 3Enter a Referring ID (a free-form identifier such as an employee number, stamped on every Wave that recorder uploads) and choose the member type they record as.

A recorder can be set to Active or Disabled, edited or removed. Removing one keeps the Waves it already uploaded. Waves from the app show when they were recorded, the Referring ID and the member type.

Where the data goes

OutputHow it works
WebhookSends the output table to an https:// URL when a Wave completes. See Webhooks.
Bucket ExportWrites every completed Wave's rows into a Bucket. Map each Wave column to a Bucket column and optionally add a Wave ID column.
Manual exportFrom a Wave: Export CSV, Export JSON or Export to bucket.

API

Copy the ID from “Signal ID” on the Signal's page and post the audio as multipart file (or as JSON with file_base64 and filename):

bash — queue a Wave
curl -X POST https://run.tavnit.io/api/signals/SIGNAL_ID/run \
  -H "X-API-Key: $TAVNIT_API_KEY" \
  -F "file=@call.mp3"
JSON — 202 response
{
  "success": true,
  "wave_id": "…",
  "signal_id": "…",
  "status": "queued",
  "audio_seconds": 754,
  "message": "Wave queued for processing."
}

Errors: 400 for a missing, empty, unsupported or too-long file, 402 when your organization can't start new work right now (contact the Tavnit team), 403/404 when the Signal isn't in your organisation. Follow the Wave in the app. See the REST API page for authentication.

Who can do what

ActionRoles
Create, edit and delete SignalsOwner, Admin
Manage recordersOwner, Admin
Run WavesOwner, Admin, Member

See User roles.

Troubleshooting

SymptomWhat to check
The upload is rejectedCheck the format (mp3, mp4, mpeg, mpga, m4a, wav, webm), the 150 MB size limit and the 8-hour length limit.
“Run Wave” is disabledThe Signal is inactive. Activate it first.
Speakers are assigned to the wrong member typeAdd descriptions to your member types saying how to tell them apart (role, what they typically say).
Conversations land in OtherDescribe each interaction type more concretely, or leave interaction types empty to capture everything.
The Wave failed after queuingCheck that the recording has at most 2 hours of speech.