Overview
A Model is a hierarchical scoring system that evaluates athletes against configurable performance metrics. Models transform raw athlete data (statistics, measurements, assessments) into normalized scores that roll up to an overall valuation between 0 and 1.Purpose
Models enable teams to:- Evaluate athletes objectively using data-driven metrics with customizable weighting
- Compare athletes across different positions using position-specific scoring criteria
- Track performance against defined targets and benchmarks
- Segment evaluation by athlete characteristics (position, experience, etc.)
Use Cases
- Recruitment evaluation and ranking
- Transfer portal analysis
- Performance benchmarking against team standards
- Position-specific athlete assessment
- Multi-factor valuation for roster decisions
Model Structure
Every model is a tree of metrics that aggregate into an overall score.Root Metric
All models have a single root metric called “Overall Valuation” (id:root). This is the top-level aggregation point where all child metric scores bubble up. The root metric:
- Cannot be deleted or renamed
- Has a fixed path of
"" - Aggregates all direct children using weighted scoring
Metric Hierarchy
Metrics are organized as a tree using paths. Each metric’s path represents its position in the hierarchy:
A metric’s parent is determined by its path. The path
abc123/def456 has parent path abc123.
Metric Types
AUTO
Data-driven metrics that pull values from athlete variables (statistics, measurements).- Requires an
variable_idlinking to the data source - Requires an
agg_typespecifying how to aggregate multiple data points - Value is fetched and calculated automatically based on configuration
MANUAL
Static metrics where values are entered directly by users.- No automatic data fetching
- Values are stored as athlete metric values
- Useful for subjective assessments or data not captured in variables
GROUP
Composite metrics that aggregate child metrics.- Act as organizational containers in the tree
- Score is calculated from weighted child scores
- Can be static (just aggregates children) or dynamic (has its own data source)
GROUP metrics with no children and non-zero weight are invalid. A group’s
score derives from its children.
Metric Configuration
Weight
Each metric has a weight (0-1) representing its contribution to the parent’s score.- Weights of all siblings should sum to 1 (100%)
- A weight of 0.25 means this metric contributes 25% of the parent’s score
- Weight of 0 effectively disables the metric
Interpolation Methods
Interpolation defines how raw values map to scores. Every interpolation has three boundary values:- Worst: The raw value that produces score 0
- Target: The raw value that produces the full weighted score
- Best: The upper bound of the value range
Stepwise Configuration
Stepwise interpolation uses an array of steps, each with:Units
Units define how values are displayed and interpreted:Fallback Behavior
When data is missing for a metric, the fallback determines behavior:Model Groups
Model groups enable segmentation - different metric configurations for different athlete types.Group Hierarchy
Groups form a tree structure similar to metrics:- Groups can have parent groups (creating nested segments)
- Each group can filter by athlete position
- Each group can filter by data conditions (e.g., “Total Points > 100”)
Universal vs Group-Specific Metrics
- Universal metrics (
model_group_id: null) apply to all athletes - Group-specific metrics only appear when evaluating athletes matching that group
Metric Overrides
Overrides allow customizing a metric’s configuration for specific groups without duplicating the entire metric. An override can modify:- Weight
- Interpolation type and details
- Fallback behavior
- Data filters
Applicability
When evaluating an athlete, the system:- Finds all groups the athlete matches (by position and data filters)
- Builds “branches” from root to each applicable leaf group
- Collects all universal metrics plus group-specific metrics from applicable branches
- Merges overrides from shallowest to deepest group
Score Calculation
Flow
- Data Aggregation: For AUTO metrics, fetch and aggregate raw data
- Interpolation: Map raw value to normalized score using interpolation method
- Weighting: Multiply normalized score by metric weight
- Propagation: Roll up child scores to parent groups
Group Score Calculation
For GROUP metrics, the score is derived from children:- Sum all child weighted scores
- Calculate the sum of all child weights
- Determine children’s performance ratio (scores sum / weights sum)
- Adjust base weight by children’s performance
If any child has a null score and no fallback, the parent group’s score
becomes null.
Example
Consider a model with:- Speed: 0.8 (80% of target)
- Strength: 0.6 (60% of target)
- Points: 0.9 (90% of target)
- Assists: 0.7 (70% of target)
- Athleticism = (0.8 × 0.5 + 0.6 × 0.5) × 0.4 = 0.28
- Production = (0.9 × 0.7 + 0.7 × 0.3) × 0.6 = 0.504
- Overall = 0.28 + 0.504 = 0.784