Scores
Overview
routing.projections.scores combines matched signal evidence into one continuous numeric value.
What Problem Does It Solve?
Decisions are built for readable boolean logic. They are not a good place to express "take a little evidence from context length, some from reasoning markers, subtract some weight for very simple requests, and then decide which tier this belongs to."
Scores solve that by giving you one explicit numeric layer between signals and decision policy.
How Scores Behave at Runtime
Only method: weighted_sum is supported.
Each input contributes:
weight * input_value
How input_value is computed depends on value_source:
- omitted or
binary: usematchwhen the signal matched andmisswhen it did not confidence: use the matched signal confidence, or0when the signal did not matchraw: use the raw numeric value fromSignalValues(e.g., a count or measurement), or0when absent
Defaults:
matchdefaults to1.0missdefaults to0.0
Most inputs reference a declared signal under routing.signals. The
kb_metric and projection types instead reference derived runtime state as
described below.
Supported input types include:
keywordembeddingdomainfact_checkuser_feedbackreaskpreferencelanguagecontextstructurecomplexitymodalityauthzjailbreakpiikbconversationeventkb_metricprojection
For kb_metric, kb identifies a configured knowledge base, metric selects
best_score, best_matched_score, or a metric declared by that knowledge
base, and value_source is score. For projection, name identifies an
earlier score or mapping output.
Scores are internal projection state. Decisions do not reference score names directly; mappings consume them next.
Configuration
routing:
projections:
scores:
- name: difficulty_score
method: weighted_sum
inputs:
- type: keyword
name: simple_request_markers
weight: -0.28
- type: context
name: long_context
weight: 0.18
- type: keyword
name: reasoning_request_markers
weight: 0.22
value_source: confidence
- type: embedding
name: agentic_workflows
weight: 0.18
value_source: confidence
- type: complexity
name: general_reasoning:hard
weight: 0.22
Raw value source
When a signal family exposes numeric measurements (counts, distances, token totals) through SignalValues, use value_source: raw to feed them directly into the weighted sum instead of reducing them to binary or confidence scalars.
routing:
projections:
scores:
- name: workload_pressure
method: weighted_sum
inputs:
- type: structure
name: many_questions
weight: 0.2
value_source: raw
- type: structure
name: nested_depth
weight: 0.4
value_source: raw
Raw values can differ in scale across signal families. Choose weights carefully or use threshold bands that account for the expected numeric range.