Meilisearch / React Instant Search Integration @ Contra

James Sheldon

Backend Engineer
Frontend Engineer
Postman
React
TypeScript
Contra

Overview 🔎

As part of the initiative to allow clients the ability to discover independents with the skills, roles, and experience they need, we built the discover independents section on Contra. We need this experience to be fast, reliable, and accurate so that users on Contra could quickly find exactly the person they need for their important projects.

Discover Independent Search Experience on Contra

Problem & Solution 🤝

Prior to the discover independent tool users had a hard time naturally discovering the vast talent of independents on Contra. Users would need to have known someones profile url or have been invited to platform as part of a project to easily see someone else. This tool allows clients and independents to easily discover high quality talent on Contra based on information they've published to their profile.



Goals/Requirements:

  • Create a fast search experience that allows users to quickly explore candidates while browsing key information about their profile.
  • Allow users to easily contact independents once they've found the person they are looking for.
  • Save users to their favourites so they can quickly come back later or compare multiple potential independents.
  • Allow for the solution to scale as the talent pool grows on Contra.
  • Allow the index to be quickly rebuilt and updated when users modify their profile information.



Process 🛣

  1. Evaluate search/index frameworks to determine what the right balance of performance, features and cost would best align with the goals defined above.
  2. Create index logic when new users signup or edit their profiles their profile is indexed accurately with content relevant for search.
  3. Build front end instant search components that allow for users to interact with the index data to find independents that match customized project criteria and preferences.



Takeaways 📣

Although the out of the box instant search components are great they aren't a good fit for all cases. At first I was hesitant to create custom instant search connectors and that ended up being a time sync. If the use case you have for filters and refinements doesn't align with the prebuilt hooks and connectors I strongly suggesting rolling your own connector / hook for better flexibility. This was evident when attempting to build a timezone + offset filter. Trying to use the existing range and refinement tools that instant search profiles proved problematic with the requirement of having timezones wrap from +12 UTC to -12 UTC.





2022

Partner With James
View Services

More Projects by James