Two levels: groups and analyses
Group
A named set of related values —
Lead QA, Support Triage. This is what an agent attaches,
and everything inside it is extracted together in one pass.Analysis
One named value inside a group —
Lead Temperature, Budget USD. It has a result format and
a description telling the model what to pull out.Definitions live in your workspace, not on the agent
You write a group once, in the library, and attach it to as many agents as you like. Editing it there updates every agent running it, immediately. An agent never authors its own analyses — it only chooses which groups to run.Result formats
Every analysis produces exactly one shape. Pick the one that matches the question:
Choosing List asks you one extra question: is each item a single value or multiple
fields? It matters — the first gives you
["pricing", "integration"], the second gives you
[{ "product": "Widget A", "quantity": 2 }]. Vocily asks outright rather than leaving the shape
to chance.
Allowed values
On a Text analysis, add Allowed values to restrict the answer to a fixed list —hot,
warm, cold. This is the single most reliable thing you can do to make results consistent,
because the model is constrained to those options rather than merely asked for them.
Advanced constraints
Each format offers the limits that make sense for it, and only those: length, pattern and format (email, date, URI…) for text; minimum, maximum and multiple-of for numbers.Allowed values are enforced by the model itself. Every other constraint is sent as an
instruction and then re-checked by Vocily afterwards. When a single value breaks a rule it is
kept and flagged — a slightly-too-long sentence is still useful, and a blank tells you
nothing. When an item in a list breaks a rule it is dropped, and the count is reported.
A bad list entry is not a near-miss, it is noise.
Only run when it is worth it
Open Advanced settings on a group to set Only run when…. A group can require a minimum number of messages, a minimum duration, or a specific way the call ended — pick from Completed, Voicemail, No answer, Busy, Declined, Failed, Transfer completed, and Transfer failed. All the conditions you set must pass. Conditions are checked before any work happens, so a conversation that does not qualify costs you nothing. It is marked skipped, never failed, so genuine failures stay easy to spot. A minimum duration does not apply to text chats — a chat has no duration, so the rule is skipped rather than silently disabling the group for every chat you ever have.Extract with a pattern instead of a model
Set Extraction method to Regex when the value has an exact, predictable shape — order IDs, confirmation codes, ticket numbers. Vocily matches your pattern against the transcript directly: faster, free, and it fails visibly instead of guessing. A capture group defines what gets pulled out; a List collects every match, any other format takes the first. Pattern and AI analyses mix freely inside one group, and a group made only of patterns never calls a model at all.Test before you switch it on
Select Test on the agent’s Custom Analysis screen. You can paste a transcript, or — better — pick a real past call. Only a real call carries the duration and ending that your conditions read, so it is the only way to see gating behave as it will in production. The test shows each group’s status, the model used, how long it took, and every value with the model’s one-line reasoning for it. Nothing is saved.Reading your results
Results appear under Extracted Data on the conversation, grouped by group name, with types preserved and each value’s reasoning available. They also ride thecall.analysis.completed and
call.processing.completed webhooks, addressed by the names you
typed:
Which model does the work
By default each group is analysed by the agent’s own model — the one that held the conversation. Override it per group under Advanced settings if you want a cheaper or stronger model for that particular extraction. Any model in the catalogue works.Custom Analysis and versions
The groups an agent runs are part of its configuration, so the selection is saved with your draft and travels with versions like everything else. Rolling back restores which groups ran. The group definitions themselves are not versioned — they belong to the workspace. Editing a group changes what every agent attaching it extracts, including agents on older published versions. That is the point of a shared library, and worth remembering before you reword a description that several agents depend on.Limits and permissions
Deleting a group never erases past results — conversations that already ran it keep everything
they extracted. See Roles and permissions.