Boolean searches can be intimidating, but once you understand how to unleash their power, your sourcing game will be forever changed. A combination of statements can be used to find the right people that best fit the exact needs. The key to remember is to watch your syntax and how you nest your ANDs, ORs, and NOTs together. After you practice a bit, you'll be a master Boolean researcher.

Inside the humanpredictions' search page, you can craft your own Boolean search from scratch or use our Advanced Search to build the foundation of your Boolean search and modify it to your liking. Be aware however that the Advanced Search feature can build a Boolean string that is too long to see it all without using the right arrow to scroll through the search bar. 

Let's review some of the rules to help boost your Boolean expertise and eliminate any confusion.  

  1. Boolean Searches are built using simple words, known as "operators" (AND, OR, NOT) to combine or exclude keywords in a search, resulting in more focused results.
  2. If no operator is used, the default is AND.  However, best practice for a successful query is to always specify the operators. 
  3. A good overall rule to remember is that an AND operator will narrow your search results and an OR operator will expand the search. 
  4. You have to capitalize the AND, OR, and NOT operators for them to work.
  5. If you are using an operator, you need to include parenthesis but for a simple, single rule, Boolean search, you won't need parenthesis. For example: level:senior is fine without parenthesis, but if the search includes more than one value, then it looks like level:(senior OR mid-level)
  6. If you are using a specific attribute, you need to follow the attribute name with a ":" such as technologies:ruby. However, you can also search for a value without specifying an attribute and it will search for that value anywhere in the person's profile. A simple search of "Ruby" with no attribute assigned will give results with people who have Ruby anywhere at all on their profile.  It could be on one of their bios, or they have joined a Ruby Meetup, or they have attended a Ruby conference, etc. If you don't need it to be specific (like only listed as a technology), you'll get more results by keeping the search open to the entire profile.
  7. You can use our Advanced Search Filter to let us craft a Boolean search string based on the filters you choose.  Then you can further narrow your search using the filters under the Technology Categories or Social Networks (we call these filters "badges"). These badges won't be included in the Boolean search string that is created from the Advanced Search feature, but are added automatically in the app with an AND operator to focus your search even more based on those filters.  
  8. If you want to search for a skills using the technologies or top_technologies attributes, the skill must be one of our pre-defined technologies that are in the drop down list. This is a common cause of no search results.  For example, searching for technologies:(NLP) will produces no results because NLP isn't in our database. 
  9. There are a few different syntax options for the NOT operator. You can use "NOT", a "-", or an "!" before the term you'd like to be not included in the results. Here's an example: NOT current_titles:(intern OR student). This will filter anyone with the words "intern" or "student" in their current title out of your search results. In addition, for your more complicated filtering pleasure, you can utilize the NOT feature on either the attribute itself as in the above example, or on the specific value you are looking for. An example of this would be current_titles:(-intern AND engineer) which would return people with the word "engineer" in their current title but not the word "intern".
  10. You can use the term "_exists_" in front of a search to see if there is any information at all in that field. For instance, if you searched _exists_:(degrees), it will search people profiles to return all profiles that have educational degree information in their profile. Essentially, you're asking, "does that information exist?" It isn't looking to see what the information is, just whether or not it exists.
  11. You can utilize the NOT operator in conjunction with the _exists_ option to exclude people such as NOT _exists_:linkedin_username.
  12. Use parenthesis to group the operators and remember to logically work from the inside to the outside (just like in math). The AND operator has the highest priority in a Boolean search and will be executed first if parenthesis are not used. Let's look at an example: _exists_:(resume) AND titles:(engineer) OR _exists_:(conference_talks) will evaluate the AND first so it will only list people with a resume AND engineer in the title OR people who have given conference talks (regardless of their title or resume status).  This is a completely different search, with different results than _exists_:(resume) AND (titles:engineer OR _exists_:conference_talks) which will list people who (1) have a resume AND (2) they are either engineers or they have given conference talks. Again best practice for success is to use all the parenthesis and not assume any defaults.
  13. If you'd like to search for an exact match of a search phrase, you should use quotation marks. This is especially useful for looking for attributes such as titles that are more than one word, like this example: titles:("back end" OR "back-end"). Keep in mind that capitalization is ignored, even in quotes, so titles:("Front End") will give the exact same results as titles:("front end").
  14. If you'd like to find people who have been coding for a while, you can filter for those who have been on GitHub for a while with a search like: github_join_date:<2013-10-01. This will search for all profiles that have GitHub profiles that were established before October 1, 2013. Dates in our database are stored in the format YYYY-MM-DD so even though it feels a bit awkward, that's the format you need to use when including dates in your Boolean string. 
  15. A final helpful hint is to include all variations for terms in your search to maximize your results. Say you're sourcing for a candidate with experience at the vice president level, a search of titles:("vice president" OR "vice-president" OR "v.p." OR vp) will help you get the most results. 

Additionally, here are the attributes on a person that you can use to build your Boolean searches:

companies
conference_talks
conferences
current_companies
current_titles
degrees
degrees.institution
degrees.major
email
github_companies
github_hireable
github_join_date
github_organizations
level (3 possible values: senior, mid-level, or junior)
meetups
name
past_companies
past_titles
popular_repos
resume
starred_repos
technologies
top_technologies (the top 3 skills for a person)
titles
twitter_bio

Here are the usernames for a person that you can check for in humanpredictions: 

chef_supermarket_username (Dev Ops)
cocoapods_username (iOS Developers)
codepen_username (Front-End Developers)
dribbble_username (Designers)
facebook_username
github_username
kaggle_username (Data Scientists)
linkedin_username
meetup_id
npmjs_username (Front-End Developers)
nuget_username (.NET Developers)
puppetforge_username (Dev Ops)
rubygems_username (Ruby Developers)
security_user_id (Security Folks)
serverfault_user_id (Dev Ops)
speaker_deck_username
sqa_user_id (QA Folks)
twitter_username

Well, there you have it, some foundational Boolean best practices. Give them a try and let us know how they work for you. Need help? Use that little chat box in the bottom right corner or email us: support@humanpredictions.io and we'd gladly help you narrow your searches!

Did this answer your question?