Company and Contact Management

Unlocking Precision and Speed in Contact Search with Rox 🚀

At Rox, we’re transforming the CRM space by harnessing our agent swarm to generate insights, discover contacts, and streamline outreach.

One of our flagship features, Contact Search, is designed to help users quickly and accurately find the right people within target companies. Whether it’s finding all directors at a company or pinpointing a specific LinkedIn profile, Contact Search delivers results with speed and precision.

The Problem: Finding Contacts Effectively

Sales teams need to identify contacts for both broad searches, like finding account executives in a company, and exact matches, such as locating a LinkedIn profile. Our system had to meet three key requirements:

  • Precision: Deliver highly relevant results.

  • Recall: Ensure no key contacts are missed.

  • Speed: Return results within a few seconds.

We built Contact Search on a replica of a massive database with over 1 billion contacts from an external vendor, optimizing it for scalability and efficiency.

Designing the Search System

Contact Search operates in two modes: Basic Search and Deep Search, tailored for different query types.

Basic Search: Fast and Direct

For straightforward queries, Basic Search performs keyword-based database lookups.

For example, searching “Director of Engineering” retrieves titles containing “Director” and “Engineering,” ranked by relevance. This approach is simple, fast, and effective for most use cases.

Deep Search: Advanced Semantic Matching

For complex queries, Deep Search goes beyond keywords by leveraging vector embeddings for semantic matching.

It starts with a broad search (e.g., all “Directors”) and refines results by comparing the semantic meaning of the query and candidate titles. This allows matches like “Director of Machine Learning” with “Director of Data Science,” ensuring deeper contextual relevance.

Challenges and Optimizations

Building Contact Search posed challenges in precision, recall, and speed, which we addressed with key optimizations:

Precision: Filtering Out Noise

To eliminate false positives, we verified data using Google searches and LLM parsing, filtering out fake LinkedIn profiles.

Recall: Ensuring Completeness

For exact searches, we introduced a fallback system to check LinkedIn URLs in real-time when the database lacked information.

GIN Indexing for Faster Searches

Speed is critical when dealing with a database of over a billion records. To optimize keyword search, we used a GIN (Generalized Inverted Index) in PostgreSQL. A GIN index is particularly effective for full-text search and allows rapid lookups of rows that match a given keyword or set of keywords.

Additionally, we created a composite B-tree/GIN index on the combination of company and title fields. This hybrid indexing strategy enables highly specific searches, like finding a director at a specific company, to execute far more quickly. By leveraging these indexing techniques, we reduced query times from what could take minutes to well under 5 seconds for most cases.

Decoupling Search and Enrichment

To further improve speed, we separated the search process (finding relevant contacts) from the enrichment process (adding extra details to those contacts, like email or summary snippets about the contact’s role). Search results are presented to the user immediately, while enrichment continues in the background. This decoupling ensures that users can act on the initial results without waiting for the additional processing to complete.

We also introduced incremental streaming of results to the UI, displaying contacts as they are processed. This makes the search experience feel faster and more interactive, especially for large queries, as users don’t have to wait for all results to load before they can start exploring.

What’s Next?

We’re enhancing Contact Search by integrating with additional public data sources, improving recall and precision with intelligent data imputation, and continuing to optimize for even faster performance. Our goal is to make Contact Search the most reliable tool for discovering and connecting with the right contacts.

Conclusion

Contact Search is a fast, robust, and intuitive solution that combines simple keyword lookups with advanced semantic search. It empowers sales teams to find and connect with the right people, faster and more effectively. The future of AI-driven CRM is here — try Rox today and experience it for yourself. 🚀

Last updated

Logo

Copyright © 2024 RoxAI. All rights reserved. 251 Rhode Island St, Suite 207,
San Francisco, CA 94103