Extend calibration with multi-arm variant testing, multi-objective reward weighting, and cross-customer insignificance priors.
Test more than two survey variants simultaneously. The number of variants (including the control) is limited by your subscription plan.
| Plan | Max Variants (incl. control) |
|---|---|
| Starter | 2 |
| Pro | 5 |
| Business | 10 |
| Enterprise | Unlimited |
When comparing multiple challengers against a single control, the significance level is adjusted to control the family-wise error rate:
adjusted_alpha = alpha / number_of_challengersFor example, with alpha = 0.05 and 4 challengers, each pairwise comparison uses alpha = 0.0125. This tighter threshold increases the required sample size per variant.
Winner detection uses pairwise mSPRT (mixture Sequential Probability Ratio Test), comparing each challenger independently against the control. The first challenger to beat the control at the adjusted significance level is declared the winner.
Configure how calibration rewards are computed by weighting three objective dimensions: completion, attentiveness, and fidelity. Attentiveness is one minus half a variant's straightlining rate and half its speeding rate; its weight is sent as quality.
Set a survey's weights with PUT /api/v1/surveys/:id/calibration/strategy (scope surveys:write), or the MCP tool update_calibration_strategy. Send strategy as one of the presets below, or custom with weights: { completion, quality, fidelity }, each between 0 and 1 and summing to within 0.05 of 1. The response is the weights stored.
A survey that sets no weights inherits them: each objective comes from the survey's own weights where it sets them, else the organisation's default, the platform's, and finally completion alone. The weights are scaled to sum to 1 when rewards are computed. The API sets weights but does not clear them; the dashboard's calibration page has "Use defaults" for that.
The presets the endpoint and the MCP tool accept, and the weights each stores.
| Preset | Completion | Attentiveness | Fidelity |
|---|---|---|---|
completion | 1 | 0 | 0 |
quality | 0.2 | 0.6 | 0.2 |
fidelity | 0.2 | 0.2 | 0.6 |
balanced | 0.34 | 0.33 | 0.33 |
The calibration reward for each response is computed as:
reward = w_c * completion + w_q * attentiveness + w_f * fidelityWhere w_c, w_q, and w_f are the objective weights configured for the survey (see above).
The fidelity score is a composite of five sub-metrics that measure response trustworthiness:
| Component | Description |
|---|---|
| Attention accuracy | Correct responses to attention-check questions |
| Time consistency | Response times within expected range for question type |
| Answer variance | Non-straightlining — no battery of five or more items on one scale given the same answer (90% or more of its items) |
| Completeness | Percentage of optional questions answered |
| Engagement depth | Time spent on open-text and complex question types |
Look up whether a given category and question type combination historically produces meaningful calibration effects, based on anonymised data aggregated across all opted-in Surventrics customers.
/api/calibration/insignificance-predictionsurveys:read20/minute per org| Name | Type | Description |
|---|---|---|
category | string | Calibration category, required (e.g., satisfaction, demographics, product_feedback). |
questionType | string | Question type, optional. Must be a valid question type (e.g., single_choice, likert, nps). |
curl -X GET "https://app.surventrics.ai/api/calibration/insignificance-prediction?category=satisfaction&questionType=likert" \
-H "Authorization: Bearer YOUR_API_KEY"{
"isInsignificant": true,
"confidence": 0.97,
"basedOnN": 312,
"insignificanceRate": 0.97
}| Name | Type | Description |
|---|---|---|
isInsignificant | boolean | true when the insignificance rate meets the threshold (>96% of past calibrations showed a <2pp effect). |
confidence | number | Confidence in the prediction (0.0 - 1.0); equals the insignificance rate, and is 0 when there is no applicable prior. |
basedOnN | number | Number of anonymised cross-customer observations the prediction is based on. |
insignificanceRate | number | Fraction of past calibrations for this category/type that showed a less-than-threshold effect (0.0 - 1.0). |
200 with isInsignificant: false and confidence: 0 (rather than an error), so callers can treat low confidence as “not enough data”.Errors are returned with an HTTP status and a flat { "error": "<message>" } body (not the structured envelope used by the key-authenticated endpoints).
| Status | When |
|---|---|
400 | The required category query parameter is missing. |
500 | The prediction could not be computed. |