Overview
Qualification rules determine whether a customer is eligible to receive a specific offer. They are evaluated during the Filter stage of a decision flow and come in two categories: hard qualification (binary pass/fail) and soft fit (0-1 multiplier that adjusts scoring).
Rule Categories
Hard Qualification
Soft Fit
Hard qualification rules produce a binary pass or fail result. If a customer fails any hard qualification rule, the offer is removed from the candidate set entirely.| Rule Type | Description |
|---|
segment_required | Customer must belong to one or more specified segments |
attribute_condition | Customer attribute must satisfy a condition (e.g., age >= 18, state != "NY") |
Example: Segment Required{
"ruleType": "segment_required",
"qualification": "hard",
"config": {
"segments": ["credit_eligible", "active_account"],
"matchMode": "all"
}
}
Example: Attribute Condition{
"ruleType": "attribute_condition",
"qualification": "hard",
"config": {
"attribute": "customer.age",
"operator": ">=",
"value": 18
}
}
Soft fit rules produce a multiplier between 0 and 1 that adjusts the offer’s score. A multiplier of 0 effectively eliminates the offer; a multiplier of 1 has no effect; values in between reduce the offer’s ranking priority.| Rule Type | Description |
|---|
propensity_threshold | Score from a propensity model must meet a minimum threshold |
recency_check | Minimum days since the customer last received this offer |
Example: Propensity Threshold{
"ruleType": "propensity_threshold",
"qualification": "soft",
"config": {
"modelReference": "model_propensity_cc_v3",
"threshold": 0.4,
"multiplierBelow": 0.2
}
}
When a customer’s propensity score is below the threshold, the offer’s score is multiplied by multiplierBelow (0.2 in the example above). This keeps the offer in the candidate set but significantly reduces its ranking.
Example: Recency Check{
"ruleType": "recency_check",
"qualification": "soft",
"config": {
"minDaysSinceLastImpression": 14,
"multiplierIfRecent": 0.1
}
}
Scope
Qualification rules can be scoped to apply broadly or narrowly:
| Scope | Description |
|---|
global | Applies to all offers across all categories |
category | Applies to all offers within a specific category |
Global rules are evaluated first, followed by category-specific rules. If a customer fails a global rule, category rules are not evaluated for that offer.
Decision Flow Modes
When a decision flow reaches the Filter stage, you can control how qualification rules are applied:
| Mode | Description |
|---|
| Apply All | All active qualification rules (global + category) are evaluated. This is the default. |
| Select Specific | Only the qualification rules explicitly selected in the flow configuration are evaluated. |
| Skip | Qualification rules are bypassed entirely for this flow. |
Use Skip mode with caution. Bypassing qualification rules means offers may be recommended to ineligible customers, potentially causing compliance or customer experience issues.
Creating a Qualification Rule
Navigate to Qualification Rules
Go to Studio > Qualification Rules in the sidebar.
Click Create Rule
Click the + New Rule button.
Name the rule
Enter a descriptive name (e.g., “Must be 18+” or “High Propensity for Credit Cards”).
Choose qualification type
Select Hard (pass/fail) or Soft (multiplier).
Select rule type
Choose the specific rule type: segment_required, attribute_condition, propensity_threshold, or recency_check.
Configure parameters
Fill in the rule-specific configuration (segments, attribute conditions, thresholds, multipliers).
Set scope
Choose Global or select a specific Category for the rule to apply to.
Save
Save the rule. It is immediately active and will be evaluated in all decision flows using the “Apply All” or “Select Specific” mode.
API Reference
Create a Qualification Rule
POST /api/v1/qualification-rules
Content-Type: application/json
Request body:
{
"name": "Credit Eligibility Check",
"description": "Customer must be in the credit_eligible segment and at least 18 years old",
"qualification": "hard",
"ruleType": "attribute_condition",
"scope": "category",
"categoryId": "cat_credit_cards",
"config": {
"conditions": [
{
"attribute": "customer.age",
"operator": ">=",
"value": 18
},
{
"attribute": "customer.segment",
"operator": "contains",
"value": "credit_eligible"
}
],
"matchMode": "all"
},
"enabled": true
}
Response (201 Created):
{
"id": "qr_credit_check",
"name": "Credit Eligibility Check",
"description": "Customer must be in the credit_eligible segment and at least 18 years old",
"qualification": "hard",
"ruleType": "attribute_condition",
"scope": "category",
"categoryId": "cat_credit_cards",
"enabled": true,
"createdAt": "2026-03-10T14:30:00Z",
"updatedAt": "2026-03-10T14:30:00Z"
}
List Qualification Rules
GET /api/v1/qualification-rules
Filter by scope, categoryId, or qualification type using query parameters.
Update a Qualification Rule
PUT /api/v1/qualification-rules/:id
Delete a Qualification Rule
DELETE /api/v1/qualification-rules/:id
Evaluation Order
During a decision flow’s Filter stage, qualification rules are evaluated in this order:
- Global hard rules — Any failure removes the offer
- Category hard rules — Any failure removes the offer
- Global soft rules — Multipliers are accumulated
- Category soft rules — Multipliers are accumulated
- Final score adjustment — The offer’s base score is multiplied by the product of all soft fit multipliers
For example, if a soft propensity rule returns 0.8 and a soft recency rule returns 0.5, the offer’s score is multiplied by 0.8 * 0.5 = 0.4.