Identity Graph

Resolve: Building the Identity Resolution Engine

The following is the start of a multi-part series offering a glimpse of the behind-the-scenes advancements we achieved to deliver our Resolve API. The series, while technical in nature, will span from security to performant APIs, but by staying at a high level caters more towards the technical and product leaders. The series will tee up some deeper dives for future posts written by our engineers and hence more technical in nature for the salivating engineer. I hope you enjoy reading about our journey as we strive to become the recognized leader in Identity Resolution.

Part 1: Birth of an Identity Graph

When we first started FullContact, our mission was to solve the world’s Contact Problem by providing the “one-stop-shop” for personalized contact management. We wanted to make the Rolodex obsolete. This new world needed a digitized Address Book to simplify the portability and accessibility of the people in our daily lives. FullContact created a tool that allowed me as a consumer to connect to all the platforms where I had connections to people and load them into a single view. 

The first major challenge we faced was how to reconcile all the duplicated people in our own address books. There really wasn’t one true and holistic representation of my friends and family when I connected my Gmail, phone, Twitter, and whatever other social platforms I used. Each person came in as a partial view of their identity — my iPhone provided names and phone numbers; my social accounts provided names, usernames, and sometimes photos; my work Gmail showed a view into my business contacts — providing emails, names and company information, and it goes on. Not only did we have fragmented views of a person, but the data wasn’t always clean or consistent. Personalized names, nicknames, and manually entered details easily confused our systems that were meant to organize the data. It quickly became clear that there was a need for something more robust and sophisticated than our basic ‘exact/fuzzy matching’ logic. 

As we embarked on creating a feature called “De-deduplication” to reign in the chaos of messy contacts, we serendipitously gave birth to our Identity Graph which would go on to become FullContact’s patented cornerstone

Nine years later, our journey has led us to a place where our Identity Resolution capabilities differentiate us from the competition.

The Identity Graph:

  • is fast, dynamic, and fluid in the data it streams
  • works at parity between both API and Batch
  • is accurate, powering Identity Verification solutions
  • spans from terrestrial to digital spheres, and everything in between
  • can be completely rebuilt from scratch in mere hours

And as of Mid April 2020, we have productized it and named it Resolve.


In short, Resolve allows you as a customer to load up your contact fragments, from one or more data sources, and when embedded in your person-oriented workflows, it provides insight into who your customers are as they interact with your company. 

New Ingredients for an Identity Graph

Resolve begins with just a slice of an identity. Depending on the use case and workflow, it may be through a call center and thus a phone number, or an email written to customer support about a problem, or your lists of marketing leads that include duplicates, requiring cleanup and consolidation. All of these are valid and real-world ways people interact with brands (directly and indirectly), and each brings its own flavor of input fields, volume of requests, and timeliness requirements for fulfilling requests. 

To support a wide range of use cases where the requirements are so varied, we aimed to create a broad and flexible product. Historically we dealt in the Online and Offline worlds, but as part of Resolve, we wanted to further bridge into the digital world, where Cookies and Mobile Ad IDs (MAIDs) rule. We added MAIDs into our Identity Graph to span these classes of identity:

  • Offline World of Name / Address
  • Online World of Email and Social
  • Digital World of MAIDs and Cookie

Having expanded into the digital realm we can now offer assistance on web and mobile platforms, equipping our customers with tools to offer more genuine and less disjointed Customer Experiences.

If adding digital capabilities was not enough, we actually took it one step further in our Resolve API. We enabled our customers and partners to securely connect their own fragments of identities to our graph. This activates further insight into the workflows of our partners and customers by conceptually creating a private cloud.

In the second post, we talk about the thought process that we put into defining our IDs from both ease of use and baked in security principles. The third post in the series focuses on building customer trust through security capabilities, and the final post covers being API-first and choosing our bedrock. Enjoy! 

Recent Blogs