Slot capture and question coverage
How VoiceLens tracks the details an agent had to collect and the questions it had to ask, and how both feed the health score.
Most calls exist to collect or confirm information: a budget and an area, a policy number, an appointment window, an identity check. A rubric describes those expectations as slots (values to capture) and questions (things the agent must ask). VoiceLens tracks both on every call.
Slots
A slot is one piece of information the agent should obtain. Each slot in a rubric has:
| Field | Meaning |
|---|---|
key, label | Identifier and display name, for example budget, "Budget". |
category | Grouping for the scorecard: intent, property, amenities, contact, logistics. Other categories you type are stored as logistics. |
type | String, Number, Currency, Email, Phone, Date, Bool or Enum (with options). |
required | Whether a missing value counts against the completion rate. |
agentMustAsk | Whether the agent is expected to ask for it explicitly (this also creates a coverage question, see below). |
synonyms, description | Extra vocabulary and guidance for the extractor. |
Slot statuses
After analysis, each slot has one status:
- Captured: a value was obtained.
- Corrected: the value changed at least once during the call. The final value and the history are kept. A correction the agent ignored also produces a
MISSED_CORRECTIONfault. - Missing: the slot is required and applicable but no value was captured.
- Not applicable: the slot belongs to a case branch the call did not enter (see case branching).
Two flags add nuance:
- Volunteered: the customer gave the value without being asked, or before the agent's first question about it.
- Corrected: set whenever the value history has more than one entry.
Completion rate
completion_rate = required applicable slots that are Captured or Corrected
÷ required applicable slotsOptional slots appear on the scorecard but do not affect the rate.
Questions
A question is something the agent must ask, regardless of whether an answer was captured. Rubrics define questions in two ways:
- Explicit questions with detection phrases, for example "verify identity", "recap the order", "ask if there is anything else".
- Implicit questions synthesised from every slot marked
agentMustAsk. If the rubric says the agent must ask for the callback number, VoiceLens checks that a question about it was actually asked, even if the number was volunteered.
Coverage rate
coverage_rate = required applicable questions that were asked
÷ required applicable questionsHow both feed the health score
The health score multiplies the fault-based score by a quality factor built from the two rates, weighted by the rubric's captureWeight and coverageWeight (0.5 each by default). A call with perfect behaviour and nothing captured scores at most 50; a call that captured and asked everything is judged on its faults alone.
Weight them according to what the call is for. A booking line lives on capture; a regulated sales line lives on coverage.
Capture gaps across calls
The capture gaps view (and GET /api/analytics/capture-gaps) ranks slots by how often they are missed across the workspace and questions by how often they are skipped, with the corrected rate alongside. It is the fastest way to find the one detail your bot consistently fails to obtain, or the disclosure your team keeps skipping.
Practical guidance
- Keep required slots to the ones that make the call actionable. Everything else can be optional and still appears on the scorecard.
- Use
Enumslots withoptionsfor anything with a fixed vocabulary (property type, product line, department); they are extracted more reliably and can drive case branching. - Add
synonymswhen callers use different words than your rubric ("flat", "apartment", "unit"). - Mark a slot
agentMustAskonly when asking is itself the requirement. For identity checks it is; for a volunteered budget it usually is not.