I am curious about what has (presumably) lead you to discount the “obvious” solution to the first problem. Which is this: When a user upvotes a post they also invest a tiny amount of trust in everyone else who upvoted that same post*. Then if someone who never posts likes all the same things as you do you will tend to see other things they like.
* In detail I would make the time-ordering matter. A spam-bot upvoting a popular post does not gain trust from all the previous upvoters. In order to game the system the spam-bot would need to make an accurate prediction that a post will be wildly popular in the future.
I think this doesn’t work even with time-ordering. A spam bot will probably get to the post first in any case. A bot that simply upvotes everything will gain a huge amount of trust. Even a bot paid only to upvote specific posts will still gain trust if some of those posts are actually good, which it can “use” to gain credibility in its upvotes for the rest of the posts (which may not be good).
You probably also want to do some kind of normalization here based on how many total posts the user has upvoted. (So you can’t just i.e. upvote everything.)
(You probably actually care about something a little different from the accuracy of their upvoted-as-predictions on average though...)
I am curious about what has (presumably) lead you to discount the “obvious” solution to the first problem. Which is this: When a user upvotes a post they also invest a tiny amount of trust in everyone else who upvoted that same post*. Then if someone who never posts likes all the same things as you do you will tend to see other things they like.
* In detail I would make the time-ordering matter. A spam-bot upvoting a popular post does not gain trust from all the previous upvoters. In order to game the system the spam-bot would need to make an accurate prediction that a post will be wildly popular in the future.
There’s a an algorithm called EigenTrust++ that includes both similarity and transitivity in the calculation of one’s reputation score:
https://www.researchgate.net/publication/261093756_EigenTrust_Attack_Resilient_Trust_Management
This feature I would be excited to see implemented!
I think this doesn’t work even with time-ordering. A spam bot will probably get to the post first in any case. A bot that simply upvotes everything will gain a huge amount of trust. Even a bot paid only to upvote specific posts will still gain trust if some of those posts are actually good, which it can “use” to gain credibility in its upvotes for the rest of the posts (which may not be good).
You probably also want to do some kind of normalization here based on how many total posts the user has upvoted. (So you can’t just i.e. upvote everything.) (You probably actually care about something a little different from the accuracy of their upvoted-as-predictions on average though...)