I have an online tutoring marketplace similar in functionality to Clarity.fm. Our tutors with the highest ratings and most reviews for each subject tend to get overloaded with messages because they come up first in the search results. I'd like to reward these tutors for getting great ratings and reviews while still spreading the wealth to our newer tutors who have no ratings or reviews. Are there any best practices, resources, frameworks for developing an ideal a) "Best Match" algorithm for students searching for a tutor and b) Automatic Matching for students that want us to choose their tutor? Some inputs we have at our disposal: -Course/Subject match proximity -School -Graduation Year -Major -Timezone -Availability -# of Ratings -# of Sessions -Average Rating -Sign Up Date -Responsiveness -# of messages this week / month
One option is to allow sorting on different facets, and default to one that levels the playing field a bit.
For example, instead of showing the tutors with the highest ratings, perhaps you could show the tutors with the highest ratings in the last 14 days (average of the last 14 days' reviews only), or those with the most activity on the site in the last X days (using Clarity as an example, show people who are actively answering questions).
The option to see "highest rated" or "most reviewed" should still exist, but you can give your new folks a chance by creating a metric they can compete on if there's a short history option.
The catch with this, of course, is that you open the door for gaming the system by spammers or less ethical folks, so be ready to set clear guidelines and to make examples of people who abuse the filters.
I've worked on a few different matching / recommendation algorithms, and to some extent, we did exactly this at Skillshare.
For both "best match" during a search, as well as the default or auto-match, it's all about relevance.. there shouldn't really be a different goal for each.
If I'm searching for a specific course or subject, you should filter by that category.. then use things in the student's profile (e.g. major, year / age-range, etc) to determine best relevancy on the tutor side.
Without specifics, then you could at least use more general inputs, like location (in-person tutoring?) and time zone, to determine relevancy.
Beyond these, I would offer a filter / sort based on "new" or "featured" (curated) vs. "popular" or "highest rated" .. but use your internal algorithm (and UX design) to tweak whatever you want.
Happy to help and discuss in more detail based on the specifics of your business.