Ok here is my idea:
Within the client allow these rules to be modifiable in settings.
Then for each note, score the note across these dimensions which are proxy’s for notes that contain valuable information. +1 when the note passes the rule, 0 if it fails to pass. Where x is variable chosen by the user. With sane defaults chosen by you.
1. Number of unique character symbols over x
2. Message Length count on non-white space characters over x
3. Number of Likes over x
4. Subscribed (is the note from a npub that is on a predefined list that the user is interested in)
5. Zaps total over x
6. Count of unique words over x
7. Predefined list of hashtags of interest
8. Contains a link
9. Contains strings .jpg .png .gif
10. Number of zaps over x
11. Number of comments on the note
Then allow the user to set a point threshold max is 11 min is 0 to show the note otherwise it is hidden.
Once you have a client that can do this the next iteration would be to put a learning algorithm like xgboost or simpler in the client to train on how these rules are correlated to what the user likes or zaps or comments.
This enables custom weights for the rules. Instead of just a +1 for each pass.
Then just like above you score every note with the algorithm and allow the user to set a threshold.
Some UI ideas would be to allow the user to see the scores on the notes. And preview the feed so they can toggle things on and off and see how it changes the feed.
Allow reset to sane default.
Allow the toggling of all settings so the user is in charge of their algorithm.
Happy to discuss more if interested.