RecomNext

nextQL in integration

nextQL filters and boosters shape which items appear and how they rank. Configure them on scenarios and rules, or optionally replace filter/boosters per recommendation request. Full syntax lives in the nextQL reference.

Where nextQL applies
SettingTypeDefaultDescription
scenario.filterfilterHard exclusion on candidates.
scenario.boostersbooster[]Score multipliers on matching items.
rules (type=filter|booster)ruleShared expressions via rulesSlugs.
segmentation (auto-nextql)expressionAssign segment names — see Segmentations guide.
hybrid searchparsed queryPrice/category extracted from natural language.

Prefer scenarios and shared rules for durable placement policy. For one-off tuning or Admin Try it, POST /recommendations (and legacy recommend GETs) also accept request-time overrides for filter, boosters, rulesSlugs, segmentationId, itemsPerSegment, autoRelaxFilters, and relaxEntireFilterOnEmpty — omit keeps the scenario value; send a value to replace that field. Constraints remain scenario-only.

Filters

Syntax: quoted attribute names, comparisons, and / or, in / not_in / contains / not_contains. When scenario autoRelaxFilters is on and the full filter matches nothing, clauses drop right to left — put durable predicates on the left. See Query planning for filter auto-relax.

'stock' > 0

'category' in ['pc', 'console']

'tags' contains 'rpg'

'allowed_countries' not_contains 'CN'

'price' < 40 and 'genre' in ['roguelike', 'rpg']

('platform' = 'vr' or 'featured' = true) and 'stock' > 0
Use case
In-stock only on all placements

Create a rulein-stock with 'stock' > 0 and add to every scenario's rulesSlugs.

Use case
PC-only PDP similar

Scenario filter: 'platform' in ['pc', 'multi'] on pdp-similar-pc.

Boosters

Syntax: boost by <factor> where <filter_expression>

boost by 1.5 where 'featured' = true
boost by 1.3 where 'genre' in ['rpg', 'action']
boost by 0.7 where 'stock' < 10
Use case
Promote featured without excluding non-featured

Boosters re-rank; they do not guarantee inclusion. Pair with filters only when items must be excluded entirely.

Use case
Sale items on homepage
"boosters": [
  "boost by 1.4 where 'onSale' = true",
  "boost by 1.2 where 'discountPercent' > 20"
]
Attribute resolution

Attributes resolve from top-level category, then attributes.*. In expressions use'price', not attributes.price. Use in / not_in when the attribute is a scalar checked against a literal list. Use contains / not_contains only when the item attribute is an array (enum/list); RHS is a scalar. These operators are fail-closed: missing, null, or non-array → false. For denylists, every item must have the array ([] = not blocked). There is no unary !.