Advice on Structuring Database for Advanced Filtering in a Recruitment App

Hi everyone!

I’m working on a recruitment app and need some advice on structuring my database for advanced filtering capabilities.

The core of my app revolves around candidate profiles, which include various types of data:

  1. Candidates
  • Experience (List of “Experience” data type)
  • Education (List of “Education” data type)
  • Tools (List of “Tool” data type)

For each Experience object, I have fields like Description, Start Date, End Date, Company, and Location. Similarly, for Education, it includes fields like Description, Start Date, End Date, Institution, and Location.

The Tool object includes the tool name and an Experience Level (set as an Option Set).

My main challenge is setting up advanced filters that can search within a candidate’s experiences or tool proficiency in a specific way. For example, filtering candidates who have experience with a particular tool at a certain experience level, or who have worked at specific companies.

Could anyone suggest the best practices for structuring my database to handle these kinds of nested and detailed queries efficiently?

I don’t know if it’s best to have the Candidate in the Experience, Tool, etc. Datatype, or if it’s best to have within Candidate data type the list of Experiences, Tools, Education, etc.

The goal of this is to have an optimized database for searching for candidates with lots of filters

Please, if possible, detail the “why” of your answer

Any insights or examples would be greatly appreciated!

Thank you in advance!

Bubble uses elastic search. You are good to use constraints, no need to pull advanced filters. That should be the last option.

You almost certainly need the user on the 3 datasets. You may need the sub data sets within the user as well but it all depends on exactly what the filters will be and other uses of that data (e.g., onboarding). You can always be over inclusive when starting and once you’ve fleshed out your workflows and features reexamine it.

IMPORTANT: Education and Experience should be the same dataset (unless you omitted important information about them) and maybe just maybe Tools should also be in that dataset but the depends on the filters (e.g., if they will be primarily AND or OR filters) and what type of fields Institution and Company are (text, different dataset, option).

Also if you want to search or list users in a RG, you prob shouldn’t put Experience, Education and Tools on the user but in a new dataset with the user.

Thank you, this is really useful.