Topology #5 — independent_analysis → vote (with aggregator) → chair.
All members analyse independently, then cast structured votes. The vote round aggregates results; the chair synthesizes from the vote outcome.
Usage
council =
CouncilEx.Councils.Voting.new(
as: MyApp.VoteCouncil,
members: [
{:m1, MyApp.Members.Voter, [provider: :openai, model: "gpt-4o-mini"]},
{:m2, MyApp.Members.Voter, [provider: :openai, model: "gpt-4o-mini"]}
],
chair: {MyApp.Members.Synth, [provider: :openai, model: "gpt-4o"]},
aggregator: CouncilEx.Aggregators.WeightedMean
)