After hearing a talk on participatory budgeting in Edinburgh in June, I adapted my Meek STV software - CRAN R package pref - to do participatory budgeting.
I was thinking of the case of equal voters, but extending it to weighted voting is trivial as the program already allows each vote to have multiplicity; thus a vote of £1000 can be treated exactly the same as 1000 identical votes of £1.
The method is based on the idea that candidates are elected by reaching a quota, which is set in terms of votes/cost (v/c). So a project costing twice as much needs twice as many votes to be on level terms.
The quota as in Meek STV is recalculated at each stage so as to be the minimum value of v/c that ensures election.
The count stops like ordinary STV when there is not enough money left to fund any of the remaining projects in-contest. But unlike ordinary STV the variability of project costs means there are options to allocate this remainder. For example, it could be offered as partial funding to the runner-up project, and if that is declined, we could go on down the list of unfunded projects to find one that can accept - there may indeed be (at least) one for which the remainder is enough to fund it fully.
If people are interested, I might be able to get the (under-development) program up on my github page (https://github.com/denismollison) over Xmas.