LogoLogo
  • About Rox
    • Founder Note
      • 🚀Make the Best Better
      • 🪄New Era of Productivity
      • 🤖Agent Swarms
      • 🗺️System of Record
    • Product Overview
      • Plan & Prioritize: Transform Your GTM Strategy
      • Research: Self-Updating and Actionable Account Data
      • Discover: Continuous Discovery, in Auto-Pilot
      • Engage: Deep Personalization at Scale
      • Monitor: Stay Ahead with Intelligent Monitoring
    • Release Notes
    • Pricing
  • How to use Rox
    • Getting started
      • Add / Remove Agents
      • Add/Remove/Edit Columns
      • Add/Remove Filters
      • Add/Remove Tags
      • Add/Edit/Delete Views
      • Add/Remove Artifacts
    • Plan
      • Online Research Clever Column
      • Job Posting Clever Columns
      • Swarm Command (cmd+k)
      • Playbooks
    • Research
      • Add Custom Research Section
    • Engage
      • Next Steps
    • Integrations
      • Slack
      • Calendar
      • Email
  • How Rox Works
    • Rox Platform Architecture
    • System of Record
      • Rox Data Lakehouse
        • Content Ingestion for Public Data
        • Connector Hub for Enterprise App Data
        • Enterprise Business Data Share
        • Company and Contact Management
      • Rox Unified Knowledge Graph
        • ERM Layer
        • Entity Graph builder
      • Rox Data Access
        • Event Driven Framework
    • Agent Swarm
      • Architecture
        • Agent Evaluation System
      • Abilities
        • Research
          • Teams & Technologies
          • Custom Account Research
          • Account Overview
        • Engage
          • Outreach (Email & Linkedin)
          • Transcription
          • Conversational Meeting Briefings
        • Discover
          • Clever Columns
          • Pipeline Generation
        • Monitor
          • Insights
  • Blogs
    • How We Built a Scalable, Intelligent Engine for Sales Insights
  • REFERENCE
    • Admin
    • API
    • FAQ
Powered by GitBook
LogoLogo

Founders Note

  • Why ROX Exists?
  • Customer Use Cases
  • Agent Swarms
  • System of Records

Product Overview

  • Pricing

Using ROX

  • Getting Started
  • Doing Research
  • PG Asistance
  • Meeting Asistance

How ROX Works

  • Platform Architecture

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

On this page
  • Unlocking Precision and Speed in Contact Search with Rox 🚀
  • The Problem: Finding Contacts Effectively
  • Designing the Search System
  • Challenges and Optimizations
  • What’s Next?
  • Conclusion
  1. How Rox Works
  2. System of Record
  3. Rox Data Lakehouse

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. 🚀

PreviousEnterprise Business Data ShareNextRox Unified Knowledge Graph

Last updated 5 months ago