---
Introductory Thoughts on the Company Search Issue
A recent discussion in our Slack channel served as a starting point for us. One of the developers raised the issue of slow company searches, which was causing dissatisfaction among users. This was particularly evident when recruiters tried to quickly find suitable candidates, directly impacting their efficiency.
Why This Matters
The company search issue directly affected our matching team, which was responsible for creating successful connections between candidates and employers. We understood that slow searches could lead to lost potential clients and a diminished user experience. Recruiters, not getting the needed results quickly, began to look for alternatives, which was unacceptable for us.
Specific Search Problems
During testing, one team member noted that searching for companies by tags took up to 15 seconds. This time increased when the database was loaded. For instance, when a recruiter entered a query to search for companies with specific tags, the system sometimes failed to respond in time, resulting in users receiving an error message. This created a poor impression of the platform.
Initial Attempts at Resolution
Initially, we decided to optimize database queries; however, this did not yield the expected results. We improved the indexes, but the response time barely changed. Ultimately, we realized that simply optimizing queries would not solve the problem, and we began to explore other approaches.
Technical Solution — Tags and Caching
We decided to implement a tagging and caching system, which significantly improved response times. Tags allowed us to group companies by categories, while caching reduced the load on the server. Here is an example of how caching was implemented:
cache = {}
def get_companies_with_tags(tags):
cache_key =