When someone asks a question, search first suggests similar existing questions to avoid duplicates. New questions and answers are stored in sharded relational tables, indexed for search, and fanned out to followers of the topic. Votes are counted in a fast cache and folded into a ranking model that orders answers and builds each reader's feed.
Functional requirements
- Ask questions tagged with topics; get duplicate suggestions while typing
- Answer, comment, upvote and downvote
- Follow topics, questions and people
- Personalised home feed and answer ranking
- Search questions, notifications for answers and mentions
Non-functional requirements
- Read-heavy: answers are read many times more than written
- Feed loads quickly; vote counts may lag slightly
- Spam and low-quality content kept out
Extensions
- Spaces (communities) with their own feeds.
- Answer requests to experts.
- Machine translation of answers.