We have an online platform where users (patients) can ask questions to medical practitioners, after a round of online conversation with practioner they go to the practitioners clinic for further treatment.
In our current system we have a text based recommender which looks at a question's text and practitioner's previous Questions and Answers, does a topic model (160 topics) for both and then based on cosine distance recommend appropriate practitioners to each Question.
Now there are 3 problems with this.
This does not take practitioner's location, and we recommend practitioner's from very far places sometimes. To solve this I can set a rigid distance filter after our recsys. But is there a model based approach where I can use distance of asker-practitioner in the loss fn (or distance metric) itself and avoid the rigid condition?
Constraints: 1 Practitioner can take only about 10 questions per day, and 1 Question should not get too many answers, so I want to ensure that 1 Question is recommended to
K practitioners at least and
L practitioners at most (K<=L), and 1 Practitioner gets
M questions at least and
N questions at most (M<=N). I will set K,L,M,N based on A/B tests. But which algorithm can I use for this, given that I have a recsys which gives me practitioner-question affinity already?
Once a question is answered by 2 practitioners, I want to stop showing that question to other med practitioners. How do I design a data store or system for this?
This problem is very different from netflix style recsys problems that I read. Their recommendations dont have constraints, you can recommend a movie to as many users. Once few user watch a movie you don't remove the movie from other's recommendations.
Let me know if I have asked too many things in 1 Question. I will break it up into 3 Questions.