Each person appears once.
Every pair-task variable competes for the same roster. A locally perfect choice can consume the only evidence another challenge needs.
Upload real evidence, solve all pairs together, and inspect every covered or missing requirement. Age is never converted into ability.
Skills use semicolons inside a quoted field. They must be observed or self-reported; age never creates one.
Each challenge receives exactly one pair. Required skills also use a quoted semicolon list.
Waiting for validated CSV
Every pair-task variable competes for the same roster. A locally perfect choice can consume the only evidence another challenge needs.
A task is complete only when the pair's explicit skill union contains every named requirement. No age coefficient or hidden aptitude score exists.
The solver locks the complete-task optimum, then maximizes covered requirements. Age spread is optional and acts only after both higher-priority outcomes are fixed.