I'm building a mobile app that push content cards to user which is similar like Facebook's newsfeed. The system will study the user behavior and deliver "Recommended Cards" according to bookmark interest and click thru rate. The cards backlog will be sorted each time the system study the user behavior.

Current Approach:

The current apporach is to Push 20 recommended new cards to the user each time they open the app. The older cards will not be pushed again (unless there's update) and will be sorted to the bottom of the new cards.

For e.g. User launch the app in the morning, the app will push the 20 recommended cards to the user.

If the user were to launch the app in the afternoon, no new cards will be push.

If the user were to launch the app the next day, 20 new recommended cards will be push.

If the user were to launch the app 5 days later, 20 new recommended cards will be push.


I'm reviewing the logic and I can't think of a better way/ logic to deliver the content to the user. It will be extremely useful for me if the community can advise how I can make it "Better". (Pardon me for using the ambiguous term)

  • What's your opinion on the UX for this logic? How will you do it better?
  • Do you foresee any potential issues in term of usability and user's expectation?

Update (12 Jan 2017)

Thanks for some of your replies, please allow me to share a little more on the context...

There's 3 types of cards that will be push to the user. Upcoming Event Cards (e.g. Xmas Party), Policy Cards (e.g. Company's Flexi work hours) and Article Cards (e.g. How to start your day right). The Policy cards have higher priority, follow by the Event cards and lastly the Article Cards.

Currently, the system will track the user's behavior and push the "appropriate" cards over. The logic behind take into account of their "interest", "card's hotness", "relevancy" and "interaction with other cards". For each ignore card, the system will work the magic to lesser priority those similar cards.

As of now, we do not limit the size of each cards.

I hope this help.

Update (18 Jan 2017)

Hi All and thanks for assisting in my question. After reviewing all the replies, here's what me and my team feel. Even though the most of the answers do contribute to my question in one way or another especially @Petar Subotic, my team feel @Alvaro answer provide new insights that we failed to identify. If I can split the bounty, I will definitely do so. After some careful consideration, we feel that the bounty should rightfully goes to Alvaro.Thank you guys!

  • Can you give a little bit more of context? What do these cards contain? How much card equivalent content the average user normally sees daily through the app?
    – Alvaro
    Jan 11, 2017 at 17:52
  • Update the original question with more context. Hope it helps. Thanks.
    – SimonTeo
    Jan 12, 2017 at 1:44

4 Answers 4


If I understood it correctly you are pushing 20 new cards each time the user open the app in a 24 hour period, and you are pushing them all at a time.

  • Give the user something predictable like 24 new cards every 24 hours, instead of 20 every 24 hours. This way the user knows exactly when he will receive a new card or how many will he receive when he connects.
  • Push a card every hour instead of all at a time, in addition to the former idea. If the user connects every hour he will get a new card. If he connects every 12 hours he will get 12 new cards. If he connects every 48 hours he will get 24 new cards (as you set the limit on new cards on 24).
  • Relate the card content to the hour of the day. If you follow the other two points, and you have such kind of content, give the user cards related to morning on the morning, plans/party related at afternoon/night.
  • thanks for your recommendation. Worth considering. Let me share with my team.
    – SimonTeo
    Jan 12, 2017 at 9:58
  • @SimonTeo you're welcome :)
    – Alvaro
    Jan 12, 2017 at 9:59

You should be able to learn a lot more from tracking micro-interactions rather than just such high commitment open and bookmark actions

  • If feasible, I would recommend introducing a tertiary metric for cards' visibility (engagement) time, which would be inversely significant in relation to their position in the queue.
  • Additional benefit would be to track the changes in the scroll direction and speed

With regards to the content approach (if the cards are indeed of similar length and media types as facebook) I first must note that 20 stories seems rather low

  • In case that you are presenting users with highly curated and relevant content, I would still test out a "None of these are good" option in form of an obscure, "show next 20 / reload" option. This will not only be a great relevancy indicator, but also a way to mitigate the expectation of new content when user comes back for the next time in the same day.
  • To give the cards an equal opportunity you could the "scrolled past metric" to push the cards to the bottom. This is risky in terms of consistency and only works if all cards have similar content weight (e.g. no major headlines), but worth exploring, for example, if in the morning the user got 20 new cards, scrolled past first 4 and clicked on the 5th. Next time he returns in the same day, 6th card should be at the top while the original 1-5 at the bottom.

On an off-chance that same card may be loaded more than once (like movie recommendations) I would advise a "hide card" option. More details on the type of content would be beneficial.

  • Update the original question with more context. Hope it helps. Thanks.
    – SimonTeo
    Jan 12, 2017 at 1:44

My advice would be to make it as user centric as possible, in all respects, what makes your cards interesting to the user than the ones they would choose?

Building on what Petar said, and I don't know if there's a logical group to these cards, but if you give the user the flexibility to dismiss a card of no interest, could you then load other cards than are not in the same category?

Basically, my opinion is, allow the user to dismiss/reload cards as they desire, not create rules where they're not pushed for a day, next 20 are pushed etc..

  • Update the original question with more context. Hope it helps. Thanks.
    – SimonTeo
    Jan 12, 2017 at 1:45

It's hard to measure what people like or don't like. Clicking on a link doesn't mean you like the associated content. Similarly buying a ticket for a movie doesn't mean you enjoyed the movie, you might have hated it and walked out halfway.

The safest bet is to add some sort of like button. It empowers users by giving them direct control over the content they will get. Make it a nice micro interaction with a cool animation and it can even be fun.

Alternatively, here are some questions you can ask that might help you find a better solution.

  • What is your app trying to accomplish? Entertainment, company news, distract from doing actual work, etc.
  • Why do you want to limit the number of cards each day?
  • Is it mandatory that users read certain cards? (you mentioned company policy)
  • Do you want users to get hooked? (open the app every 5 minutes)
  • Do users need to find content from the previous day?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.