Easy step we can do. No contributions to individuals running for an office. Any money goes to a common fund that is distributed amongst the candidates. Equally. With a maximum amount per person correlated to the number of parties involved in the election.
Example: mayoral race with 2 parties and a fund of $500,000. Each person receives 250,000 for their campaign.
Same race but with $1,000,000 in the fund? That’s right. Each member gets 300,000 to use.
3 parties involved with that 1M fund? 333,000 per person but goes to 500,000 when the funds available allow for it
Catch: all donations go to this fund and all money used from this fund must be accounted for. Anyone found to be using their own money or any donations that did not come from the fund constitutes an automatic forfeiture of their campaign and any unspent money of their allotted amount gets returned to the funds.
Said returned funds do not get distributed to the other campaigns.
Any unused money of the fund at the end of the election is used by civil services budgets.