Multivariable search weighting/ranking

Hello, I’m hoping for some ideas to solve a search problem. I have a job candidate pool, where potential employers can search for candidates based on a set of criteria. At the moment the data structure is broadly:
Candidate - Industry(s), Expertise(s), Location(s), QualityScore
Job - Expertise(s), Location(s)
Employer - Industry(s)

Currently, employers find candidates by creating a new Job, with a repeating group displaying the results (using search + advanced filter/intersect). I also have a few conditional rules setup for filtering etc.

What I am looking to achieve is a weighted search result, where candidates are ranked and displayed in order based on how close a match they are. e.g. Candidates with industry matching Employer and with Expertise matching Job and with a high QualityScore will be shown first. So effectively an OR statement. There are other variables but this is the basic principle.
Any ideas on how I could do this (either natively in Bubble or using a 3rd party plugin/API)?

Interesting problem!

I’m pretty new with bubble, so I’m not sure this is the best way to do it, but it seems like you would have to have the same fields in every data type then cross reference them with either "do a search for Candiate… Any field contains Jobs “(Field type”…

Then intersect or merge with function and do another search for candidate for another field type.

Cuz you want each thing to match right?

You could probably do a count function where you count how many “Exerpertise” from Candidate Matches expertise from job. then sort the repeating group based on that number. Then also merge with or intersect that with “Industry” Etc…

This would seem to involve sorting on a calculated field, which Bubble can’t handle (except in counts in the group by function). You could research some plugins like List Shifter and BDK to see if they have the functionality.

I also recall questions like this coming up in the past on the forum, so you may find an existing discussion that gives you some direction.

The only native way I could see this working would be a number of different repeating groups each with their own search variables (for example, a tier 1, 2 and 3) and you stack those groups on top of each other. But this feels very messy and might bring other problems.

Thanks @yoroanoke and @ed727 , interesting food for thought. Going to explore using a temporary table to hold the search results (using an API workflow) and see what the speed is like. Then I can sort with a calculated field