### Vote Processing Algorithm
1. **Votes Preprocessing**:
- For providers with both basic and extended budget options, the algorithm enforces the lowest option to be ranked immediately after the highest option (of the same provider).
- If a provider has only one budget option, no special enforcement is needed for that provider.
- This grouping ensures accurate pairwise comparisons between different between different providers and then budget options from the same provider.
2. **Pairwise Comparisons (copeland)**:
- For each pair of candidates (provider), we calculate the total voting power supporting each over the other.
- A candidate wins a head-to-head matchup if the total voting power ranking them higher exceeds that of their opponent.
- Each win contributes 1 point to a candidate's Copeland score.
- The pairwise comparison between basic and external must also be stored, for defining the preferrence on the budget.
3. **"None Below" Handling**:
- The "None Below" option serves as a cutoff point in a voter's ranking.
- Candidates ranked above "None Below" are considered ranked.
- Candidates ranked below "None Below" are considered unranked by that voter.
- A ranked candidate always wins against an unranked candidate in pairwise comparisons.
4. **Scoring and Ranking**:
- Candidates are ranked by their Copeland score (descending), with average support as a tiebreaker.
### Allocation Process
1. **Budget Type Determination**:
- Each provider's budget (basic or extended) is determined by their internal head-to-head match result.
2. **Stream Allocation**:
- Candidates are processed in Copeland ranking order.
- Candidates that are in top 5 and were selected in SPP1, are elegible for the 2-year stream.
- All other candidates receive allocations from the 1-year stream.
- From top to bottom, try to fit projects in the 2 year stream budget, and then on the 1-year stream budget using the standard knapsack algorithm, stopping once budgets are exhausted or None Below is reached.
- If a service providers extended scope got a majority vote over basic scope and the extended scope doesn't fit into the remaining 1-year budget but the basic budget does, then the given service provider's basic budget is included.
- If a candidate is ranked below "None Below", they're rejected regardless of budget availability.
3. **Budget Transfer Mechanism**:
- After processing the top 5 candidates, any remaining 2-year budget transfers to the 1-year stream. Final 1-year budget = (Initial 1-year budget) + (Leftover 2-year budget).
4. **Rejection Criteria**:
- A candidate is rejected if:
- They're ranked below the "None Below" option
- There's insufficient budget