Interpreting Results
Map level and recommended_action onto product logic.
When status is done, route on recommended_action, then inspect flagged signals. Model jobs (examples use pulse): result.summary + result.signals[]. Sign jobs: result.signal. Field types: Response Schema. Async lifecycle: Jobs, Polling, and Webhooks. Failed or timed-out jobs usually have result: null — Job status: failed or timed-out.
Named bundles mix evidence tiers (Established, Emerging, Investigational). Interpret each signal using its sign’s tier — Sign Catalog. As-is statement: Introduction.
The summary object
Route on summary.recommended_action. It is computed from the full set of signal levels, not one sign.
If the action is none or monitor, you may not need per-sign detail. For consider, review, or escalate, use primary_signals to see which signs drive the result, then read those entries in signals. Field types: Response Schema — summary object.
The description object
summary.description.summary is narrative (no PII). vocal_features[] are the acoustic measurements behind it.
Show vocal_features to qualified care staff as context for the narrative. Feature IDs, labels, and units: Enumerations — Speech feature IDs. Field types: Response Schema — description object. Display rules: Display guidelines.
Signal levels
level is set on each signal and on summary.overall_level. none = within range. inconclusive = no usable signal; re-record instead of routing. Mapping is per-model — use level, not score.
| Level | Description |
|---|---|
none |
Signal not detected at a meaningful threshold. |
low |
Faint signal detected. Monitor for changes. |
consider |
Signal worth considering. Review alongside other clinical context. |
moderate |
Signal present. Provider review indicated. |
elevated |
Signal present at the highest level. Trigger your escalation workflow. |
inconclusive |
Analysis inconclusive or incomplete (for example, limited speech or notable audio_quality issues); prefer re-recording or collecting more information before routing. |
Note Score-to-level mapping uses a distribution-based calibration unique to each model, rather than fixed numeric ranges. This means the score value corresponding to each level varies by model. Use
level— not rawscore— for routing and display logic. If you log rawscorevalues for analytics, note the model name alongside each result.
Recommended action logic
recommended_action is determined by evaluating the full set of signal levels, not any single sign in isolation.
| Condition | recommended_action |
|---|---|
| No signals at low, consider, moderate, or elevated | none |
| 1+ at low (none at consider, moderate, or elevated) | monitor |
| 1+ at consider | consider |
| 1+ at moderate OR 2+ at consider | review |
| 1+ at elevated | escalate |
escalate takes precedence over all other conditions. When any signal is at elevated, the action is always escalate regardless of other signals.
Why review includes two or more at consider: co-occurring signals at the consider level can warrant provider attention even when each alone would only trigger a consider action. One signal at consider → consider; two or more at consider → review.
When recording conditions may be below optimal for analysis, the API may return recommended_action: "inconclusive" and overall_level: "inconclusive". Treat this as “no clear signal; prefer re-recording or collecting more information” rather than as a monitoring, review, or escalation trigger.
The signals array
signals contains one entry per sign in the model bundle.
Filter by flagged: true to surface noteworthy signs. Keep unflagged rows for logging and change-over-time. Field types: Response Schema — signals array. Display: Display guidelines.
The audio_quality object
Use audio_quality.issues to decide whether to act on the result or re-record. Field types: Response Schema — audio_quality object. Issue codes: Audio quality issue codes. File size, duration, and format live on the job object (audio_size_bytes, audio_duration_seconds, audio_content_type).
When issues is non-empty, signals may still be returned. For critical routing, prefer re-recording when quality issues are present.
Important If
audio_quality.issuescontainsinvalid_speaker, request a new recording before routing on this result.
Display guidelines
UI: level, label, flagged. Internal: score, name. description.summary only after qualified review — not in alerts or employee- or patient-facing UI.
What to display:
level— primary display primitive; meaning without the raw score.label— human-readable sign name.flagged— filter which signals appear in a user-facing view.
Keep for internal use:
score— logging and analytics.description.summary— auto-generated narrative atsummary.description.summary(model) orsignal.description.summary(sign).name— stable sign id for application logic (e.g.signal.name === "stress").
Employee, patient, or end-user labels below. flagged is true when level is consider, moderate, or elevated.
| level | Display label | UI treatment |
|---|---|---|
none |
Within normal range | Neutral |
low |
Faint indicator | Informational |
consider |
Worth considering | Informational / Caution |
moderate |
Notable indicator | Caution |
elevated |
Significant indicator | Alert |
inconclusive |
Analysis inconclusive | Neutral; suggest re-recording or collecting more information rather than treating this as a risk level. |
Use informational, non-diagnostic language. Keep clinical diagnostic terms out of end-user copy.
HTTP errors and retries: Errors.