US Pat. No. 10,509,781

SYSTEMS AND METHODS FOR UPDATING NODE PROFILE STATUS BASED ON AUTOMATED ELECTRONIC ACTIVITY

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, data from a plurality of electronic activities transmitted or received via electronic accounts associated with a plurality of data source providers;
maintaining, by the one or more processors, a plurality of node profiles, each node profile of the plurality of node profiles corresponding to an entity, each node profile including one or more field-value pairs including values extracted from the data from the plurality of electronic activities;
identifying, by the one or more processors, for a first electronic activity account of a first data source provider, a second electronic activity of the plurality of electronic activities automatically generated and transmitted in response to a first electronic activity of the plurality of electronic activities transmitted from the first electronic activity account, the first electronic activity transmitted to a recipient and the second electronic activity identifying the recipient;
determining, by the one or more processors, that the second electronic activity is an automated electronic activity responsive to the first electronic activity;
determining, by the one or more processors, responsive to parsing content included in a body of the second electronic activity, a context related to the second electronic activity;
matching, by the one or more processors, from the plurality of node profiles, a node profile corresponding to the recipient of the first electronic activity with the second electronic activity by comparing a contact identifier of the recipient extracted from the second electronic activity with a field-value pair of the node profile, the field-value pair identifying the contact identifier of the recipient and identifying a value data structure including at least a first entry corresponding to the first electronic activity or the second electronic activity;
updating, by the one or more processors, responsive to the second electronic activity, a status associated with the node profile corresponding to the recipient based on the context;
identifying, by the one or more processors, for a second electronic activity account of a second data source provider, a fourth electronic activity of the plurality of electronic activities automatically generated and transmitted in response to a third electronic activity of the plurality of electronic activities transmitted from the second electronic activity account, the third electronic activity transmitted to the recipient and the fourth electronic activity identifying the recipient;
determining, by the one or more processors, that the fourth electronic activity is a second automated electronic activity responsive to the third electronic activity; and
updating, by the one or more processors, a confidence score of the status of the node profile based on the fourth electronic activity.

US Pat. No. 10,503,719

SYSTEMS AND METHODS FOR UPDATING FIELD-VALUE PAIRS OF RECORD OBJECTS USING ELECTRONIC ACTIVITIES

PEOPLE.AI, INC., San Fra...

1. A method comprising:maintaining, by one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile including a plurality of fields, each field of the plurality of fields including one or more values;
accessing, by the one or more processors, data from a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers, the one or more processors configured to update the plurality of node profiles using the plurality of electronic activities;
identifying, by the one or more processors, a record object of a plurality of record objects of one or more systems of record, the record object comprising one or more object field-value pairs including a stage field-value pair, the stage field-value pair including a stage field and a stage value selected from a plurality of stage values, each stage value of the plurality of stage values indicating a respective proximity to a completion of an event corresponding to the record object;
matching, by the one or more processors, an electronic activity of the plurality of electronic activities to the record object based on content of the electronic activity and the object field-value pairs of the record object;
identifying, by the one or more processors, from data of the electronic activity, one or more participants of the electronic activity matched to the record object;
determining, by the one or more processors, from a node profile of the plurality of node profiles corresponding to the at least one participant or from the content of the electronic activity, one or more of a title or a department of the at least one participant;
determining, by the one or more processors, that the title or the department of the at least one participant satisfies a stage updating policy, the stage updating policy including one or more rules for updating stage values of the stage field of the record object using the title or the department of the at least one participant; and
updating, by the one or more processors, responsive to determining that the title or the department of the at least one participant satisfies the stage updating policy, the stage field of the record object from a first stage value to a second stage value indicating a second proximity to the completion of the event.

US Pat. No. 10,528,601

SYSTEMS AND METHODS FOR LINKING RECORD OBJECTS TO NODE PROFILES

PEOPLE.AI, INC., San Fra...

1. A method comprising:accessing, by one or more processors, a plurality of record objects of one or more systems of record, each record object of the plurality of record objects corresponding to a record object type and the each record object comprising one or more object field-value pairs associating an object field value to a corresponding field of the each record object, the systems of record corresponding to one or more data source providers;
maintaining, by the one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile including one or more node field-value pairs associating a node field value to a corresponding field of the each node profile;
identifying, by the one or more processors, a record object of the plurality of record objects to match to at least one node profile of the plurality of node profiles;
comparing, by the one or more processors, the object field values of the one or more object field-value pairs of the record object to the corresponding node field values of the corresponding fields of a node profile of the plurality of node profiles;
generating, by the one or more processors based on the comparing, a match score of the node profile indicating a likelihood that the record object corresponds to the node profile;
matching, by the one or more processors, the record object to the node profile of the plurality of node profiles responsive to determining that the match score of the node profile satisfies a threshold;
updating, by the one or more processors, a first value data structure of a first node field-value of the node profile by adding a first entry identifying the record object;
updating, by the one or more processors, a confidence score of the first node field value based on the first entry identifying the record object;
updating, by the one or more processors, responsive to determining that a second object field-value pair matches a second node field-value pair of the node profile, a second value data structure of the second node field-value pair by adding a second entry identifying the record object; and
updating, by the one or more processors, a second confidence score of the second node field value based on the second entry identifying the record object.

US Pat. No. 10,505,888

SYSTEMS AND METHODS FOR CLASSIFYING ELECTRONIC ACTIVITIES BASED ON SENDER AND RECIPIENT INFORMATION

People.ai, Inc., San Fra...

1. A method comprising:maintaining, by one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile including a plurality of fields, each field of the plurality of fields including one or more values;
accessing, by the one or more processors, a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers, the one or more processors configured to update the plurality of node profiles using the plurality of electronic activities;
identifying, by the one or more processors, an electronic activity of the plurality of electronic activities to process;
determining, by the one or more processors, a relationship between a sender of the electronic activity and at least one recipient of one or more recipients of the electronic activity using the node profiles of the sender and the at least one recipient included in the plurality of node profiles;
assigning, by the one or more processors, a first tag to the electronic activity based on the relationship between the sender and the one or more recipients;
processing, by the one or more processors, the electronic activity based on the assigned first tag;
parsing, by the one or more processors, the electronic activity to determine whether to match the electronic activity to one or more record objects of a system of record corresponding to the data source provider; and
storing, by the one or more processors, in one or more data structures, an association between the electronic activity and a second tag, the second tag
i) indicating to match the electronic activity responsive to determining to match the electronic activity to at least one record object of the one or more record objects; or
ii) generated, responsive to matching the electronic activity to the at least one record object, based on information associated with the at least one record object.

US Pat. No. 10,496,688

SYSTEMS AND METHODS FOR INFERRING SCHEDULE PATTERNS USING ELECTRONIC ACTIVITIES OF NODE PROFILES

PEOPLE.AI, INC., San Fra...

1. A method comprising:accessing, by one or more processors, data of a plurality of electronic activities transmitted or received via a plurality of electronic accounts associated with a plurality of data source providers;
identifying, by the one or more processors, for a node profile maintained by the one or more processors, a first set of electronic activities sent from or received by at least one electronic account linked to the node profile within a first time period;
identifying, by the one or more processors, for each electronic activity of the first set of electronic activities, a timestamp at which the electronic activity was sent or received;
generating, by the one or more processors, for each time interval within the first time period, a first temporal distribution of electronic activity for the time interval based on respective timestamps of each electronic activity of the set of electronic activities within the time interval;
determining, by the one or more processors, an electronic activity pattern based on the temporal distribution of electronic activity for each time interval within the first time period;
identifying, by the one or more processors, based on the electronic activity pattern, a first region of the electronic activity pattern satisfying a region identification policy;
storing, by the one or more processors in one or more data structures, an association between the first region and the node profile;
identifying, by the one or more processors, a second set of electronic activities sent from or received by the at least one electronic account linked with the node profile within a second time period;
generating, by the one or more processors, for a second time interval within the second time period, a second temporal distribution of electronic activity for the second time interval based on respective timestamps of each electronic activity of the second set of electronic activities within the second time interval;
determining, by the one or more processors, responsive to comparing the second temporal distribution to the determined electronic activity pattern for the node profile, that the second temporal distribution satisfies an event condition detection policy for detecting an event condition; and
storing, by the one or more processors, in the one or more data structures, an association between the node profile and the event condition.

US Pat. No. 10,489,387

SYSTEMS AND METHODS FOR DETERMINING THE SHAREABILITY OF VALUES OF NODE PROFILES

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, at least one of i) a plurality of electronic activities transmitted or received via electronic accounts associated with a plurality of data source providers or ii) a plurality of record objects of a plurality of systems of record associated with the plurality of data source providers;
maintaining, by the one or more processors, a plurality of node profiles, each node profile of the plurality of node profiles including one or more field-value pairs, each field-value pair including a value determined from data of one or more of the plurality of electronic activities or the plurality of record objects;
identifying, by the one or more processors, for a first node profile, a value of a field corresponding to a predetermined type of field that is included in one or more electronic activities or record objects accessed from a set of first data source providers including fewer than a predetermined threshold number of data source providers;
generating, by the one or more processors, responsive to determining that the set of first data source providers include fewer than the predetermined threshold number of data source providers, a restriction tag used by the one or more processors to restrict populating other node profiles of the plurality of node profiles or systems of record with the value of the node field-value pair of the first node profile;
storing, by the one or more processors, in one or more data structures, an association between the restriction tag and at least one of the first node profile or the node field-value pair of the first node profile; and restricting, by the one or more processors, provision of the value to at least one second system of record of a second data source provider different from any data source provider of the first set of data source providers.

US Pat. No. 10,489,430

SYSTEMS AND METHODS FOR MATCHING ELECTRONIC ACTIVITIES TO RECORD OBJECTS USING FEEDBACK BASED MATCH POLICIES

PEOPLE.AI, INC., San Fra...

1. A method, comprising:accessing, by one or more processors, data of a plurality of electronic activities transmitted or received via electronic accounts of one or more data source providers;
accessing, by the one or more processors, a plurality of record objects of one or more systems of record, each record object of the plurality of record objects corresponding to a record object type and comprising one or more object fields having one or more object field values, the systems of record corresponding to the one or more data source providers;
identifying, by the one or more processors, responsive to applying a matching model for identifying candidate record objects, a plurality of candidate record objects with which to match an electronic activity of the plurality of electronic activities, the matching model used to generate a respective match score between the electronic activity and a respective candidate record object of the plurality of candidate record objects;
selecting, by the one or more processors, a first record object from the plurality of candidate record objects based on a first match score between the electronic activity and the first record object;
monitoring, by the one or more processors, the match between the electronic activity and the first record object for feedback regarding the match;
responsive to not receiving a first feedback regarding the selection of the first record object,
identifying, by the one or more processors, a first data structure including an electronic activity identifier identifying the electronic activity, a record object identifier indicating the first record object and a first label indicating that the electronic activity matches the first record object;
configuring, by the one or more processors, the matching model in a first configuration by training the matching model using the first data structure, the matching model configured to output a second match score between the electronic activity and the first record object in the first configuration greater than the first match score responsive to receiving data corresponding to the electronic activity and the first record object as a first input to the matching model; and
responsive to receiving a second feedback corresponding to the electronic activity not matching the first record object,
modifying, by the one or more processors, the first label of the first data structure to a second label indicating that the electronic activity does not match the first record object or generating, by the one or more processors, a second data structure including the electronic activity identifier, the record object identifier indicating the first record object, and the second label indicating that the electronic activity does not match the first record object; and
configuring, by the one or more processors, the matching model in a second configuration by training the matching model using the second data structure or the modified first data structure, the matching model configured to output a third match score between the electronic activity and the first record object in the second configuration less than the first match score responsive to receiving data corresponding to the electronic activity and the first record object as a second input to the matching model.

US Pat. No. 10,509,786

SYSTEMS AND METHODS FOR MATCHING ELECTRONIC ACTIVITIES WITH RECORD OBJECTS BASED ON ENTITY RELATIONSHIPS

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, a plurality of electronic activities transmitted or received via electronic accounts of one or more data source providers;
identifying, by the one or more processors, an electronic activity of the plurality of electronic activities accessed from one or more servers of a first entity;
identifying, by the one or more processors, a first participant of the electronic activity associated with the first entity and a second participant of the electronic activity associated with a second entity;
parsing, by the one or more processors, the electronic activity to extract data for matching the electronic activity to one or more record objects of a system of record of the first entity;
responsive to parsing the electronic activity:
determining, by the one or more processors, whether a record object identifier indicating a relationship between the first entity and the second entity is included in the electronic activity;
responsive to determining that the record object identifier is included in the electronic activity:
identifying, by the one or more processors, using the record object identifier, a first record object of the system of record that includes an instance of the record object identifier, the first record object of a first record object type; and
storing, by the one or more processors, in one or more data structures, a first association between the electronic activity and the first record object; and
responsive to determining that the record object identifier is not included in the electronic activity:
determining, by the one or more processors, a second record object of a second record object type corresponding to the second entity;
identifying, by the one or more processors, text of a body of the electronic activity;
determining, by the one or more processors, from the text of the body, an entity identifier identifying a third entity;
identifying, by the one or more processors, using a matching policy based on the entity identifier identifying the third entity, a third record object that is
i) of the first record object type,
ii) linked to the second record object, and
iii) identifying the third entity; and
storing, by the one or more processors, in the one or more data structures, a second association between the electronic activity and the third record object.

US Pat. No. 10,489,462

SYSTEMS AND METHODS FOR UPDATING LABELS ASSIGNED TO ELECTRONIC ACTIVITIES

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, data from a plurality of electronic activities transmitted or received via electronic accounts associated with a plurality of data source providers, the one or more processors maintaining a plurality of node profiles and configured to update the plurality of node profiles using the plurality of electronic activities, each node profile of the plurality of node profiles including one or more field-value pairs, each field-value pair of the node profile associated with a corresponding field and a field value;
matching, by the one or more processors, a first electronic activity of the plurality of electronic activities to one or more participant node profiles of the plurality of node profiles, each participant node profile corresponding to a respective one of the electronic accounts via which the electronic activity is transmitted or received;
assigning, by the one or more processors, one or more tags to the first electronic activity based on at least one participant node profile of the one or more participant node profiles matched to the first electronic activity;
accessing, by the one or more processors, data from a second electronic activity transmitted or received via one or more of the electronic accounts associated with at least one of the plurality of data source providers;
matching, by the one or more processors, the second electronic activity to the at least one participant node profile;
causing, by the one or more processors, a change to the at least one participant node profile responsive to matching the second electronic activity to the at least one participant node profile, the change to the at least one participant node profile including at least one of i) an addition of a value of a field of the at least one participant node profile, ii) an addition of an indication of an electronic activity to a value data structure of the value of the field of the at least one participant node profile, or iii) a change to a connection profile between the at least one participant node profile and a second node profile;
detecting, by the one or more processors, the change to the at least one participant node profile;
determining, by the one or more processors, whether to assign a second tag to the first electronic activity responsive to determining that a first confidence score of the value satisfies a first threshold score or remove at least one tag of the one or more tags assigned to the first electronic activity responsive to determining that the first confidence score of the value no longer satisfies the first threshold score or a second confidence score of the at least one tag no longer satisfies a second threshold score; and
assigning, by the one or more processors, the second tag to the first electronic activity responsive to determining that the first confidence score of the value satisfies the first threshold score; or
removing, by the one or more processors, the at least one tag assigned to the first electronic activity responsive to determining that the first confidence score no longer satisfies the first threshold score or a second confidence score of the at least one tag no longer satisfies a second threshold score.

US Pat. No. 10,565,229

SYSTEMS AND METHODS FOR MATCHING ELECTRONIC ACTIVITIES DIRECTLY TO RECORD OBJECTS OF SYSTEMS OF RECORD

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, a plurality of electronic activities transmitted or received via electronic accounts of one or more data source providers;
accessing, by the one or more processors, a plurality of record objects of one or more systems of record, each record object of the plurality of record objects corresponding to a record object type and comprising one or more object fields having one or more object field values, the systems of record corresponding to the one or more data source providers;
identifying, by the one or more processors, an electronic activity of the plurality of electronic activities to match to one or more record objects, the electronic activity of the plurality of electronic activities identifying participants including a sender of the electronic activity and one or more recipients of the electronic activity;
determining, by the one or more processors, a data source provider associated with providing the one or more processors access to the electronic activity;
identifying, by the one or more processors, a system of record corresponding to the determined data source provider, the system of record including a plurality of candidate record objects to which to match the electronic activity;
determining, by the one or more processors, responsive to applying a first policy including one or more filtering rules, that the electronic activity is to be matched to at least one record object of the identified system of record;
in response to determining that the electronic activity is to be matched to at least one record object of the identified system of record,
identifying, by the one or more processors, a first set of candidate record objects to which to match the electronic activity responsive to applying a second policy including a first set of rules for identifying one or more record objects of a first record object type based on an object field value of the record object that identifies the one or more recipients;
identifying, by the one or more processors, a second set of candidate record objects to which to match the electronic activity responsive to applying the second policy including a second set of rules for identifying candidate record objects based on the sender of the electronic activity, wherein the second policy includes a third set of rules for identifying candidate record objects of a second record object type;
selecting, by the one or more processors, at least one candidate record object included in both the first set of candidate record objects and the second set of candidate record objects; and
storing, by the one or more processors, in a data structure an association between the selected at least one candidate record object and the electronic activity.

US Pat. No. 10,503,783

SYSTEMS AND METHODS FOR GENERATING NEW RECORD OBJECTS BASED ON ELECTRONIC ACTIVITIES

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, data corresponding to a plurality of electronic activities transmitted or received via electronic accounts of one or more data source providers;
accessing, by the one or more processors, data corresponding to a plurality of record objects of one or more systems of record, each record object of the plurality of record objects corresponding to one of a first record object type, a second record object type, or a third record object type and comprising one or more object fields having one or more object field values, the systems of record corresponding to the one or more data source providers, record objects the first record object type corresponding to first entities, record objects of the second record object type corresponding to group entities, and record objects of a third record object type linked to at least one record object of the first record object type and at least one record object of the second record object type, each record object of the first record object type, the second record object type, and the third record object type including object field-value pairs;
parsing, by the one or more processors, data of an electronic activity of the plurality of electronic activities;
determining, by the one or more processors, responsive to parsing the data of the electronic activity, that the electronic activity is to be matched to one or more record objects;
generating, by the one or more processors, activity field-value pairs from the data of the electronic activity;
identifying, by the one or more processors, a system of record corresponding to the data source provider associated with an electronic account via which the electronic activity was transmitted or received, the system of record including a plurality of candidate record objects with which to match the electronic activity;
determining, by the one or more processors, for each candidate record object, responsive to comparing the activity field-value pairs to the object-field value pairs of the plurality of candidate record objects, that a match score indicating a likelihood of the electronic activity matching the candidate record object does not satisfy a threshold;
determining, by the one or more processors, a determined object type of a new record object to generate based on one or more participants of the electronic activity, each participant of the one or more participants is a sender or a recipient of the electronic activity;
generating, by the one or more processors, the new record object of the determined object type in the system of record; and
storing, by the one or more processors, in one or more data structures, an association between the new record object in the system of record and the electronic activity.

US Pat. No. 10,504,050

SYSTEMS AND METHODS FOR MANAGING ELECTRONIC ACTIVITY DRIVEN TARGETS

PEOPLE.AI, INC., San Fra...

1. A method comprising:maintaining, by one or more processors, a plurality of node profiles respectively corresponding to a plurality of entities, each node profile including a plurality of field-value pairs;
accessing, by the one or more processors, data from a first plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers, the one or more processors configured to update the plurality of node profiles using the data from the first plurality of electronic activities;
generating, by the one or more processors, for a first node profile of the plurality of node profiles, an endpoint profile using data from electronic activities of at least one second node profile, the at least one second node profile including one or more field-value pairs that match one or more field-value pairs of the first node profile, the endpoint profile specifying targets that can be tracked based on electronic activities corresponding to the first node profile, the first node profile different from the at least one second node profile, wherein generating the endpoint profile comprises
generating, by the one or more processors, for each second node profile of the at least one second node profile, a respective electronic activity pattern based on a second plurality of electronic activities transmitted or received via electronic accounts of the second node profile, and
setting, by the one or more processors, one or more target values for the endpoint profile based on each respective electronic activity pattern;
storing, by the one or more processors, in one or more data structures, an association between the first node profile and the endpoint profile specifying the targets;
parsing, by the one or more processors, data from a third plurality of electronic activities corresponding to the first node profile;
updating, by the one or more processors, a metric relating to the targets responsive to parsing the data from the third plurality of electronic activities;
determining, by the one or more processors, that the updated metric does not satisfy a threshold value; and
transmitting, by the one or more processors, responsive to determining that the updated metric does not satisfy the threshold value, a notification to a contact identifier corresponding to a third node profile, the notification referencing at least one of the targets.

US Pat. No. 10,496,635

SYSTEMS AND METHODS FOR ASSIGNING TAGS TO NODE PROFILES USING ELECTRONIC ACTIVITIES

PEOPLE.AI, INC., San Fra...

1. A method, comprising:maintaining, by the one or more processors, a plurality of node profiles, each node profile of the plurality of node profiles including one or more node field-value pairs, each node field-value pair including a node value associated with a node field;
accessing, by one or more processors, a plurality of electronic activities transmitted or received via electronic accounts of a plurality of data source providers;
identifying, by one or more processors, from the plurality of electronic activities, a second electronic activity corresponding to a first electronic activity transmitted or received via a first electronic account associated with a first contact identifier of a first domain;
detecting, by the one or more processors, responsive to one of parsing contents of the second electronic activity or identifying content included in a header of the second electronic activity, that the second electronic activity is one of (i) a bounce-back electronic activity indicating that a second electronic account identified by a second contact identifier of a second domain that is associated with a recipient of the first electronic activity is unable to receive electronic activities or (ii) an automatic responder electronic activity generated by an autoresponder set up on the second electronic account of the recipient;
identifying, by the one or more processors, at least one node profile of the plurality of node profiles that includes the second contact identifier as a value of a field of the at least one node profile;
assigning, by the one or more processors, a first tag to the identified at least one node profile responsive to detecting that the second electronic activity is the bounce-back electronic activity or assigning, by the one or more processors, a second tag to the identified at least one node profile responsive to detecting that the second electronic activity is the automatic responder electronic activity; and
updating, by the one or more processors, a node field-value pair of the identified at least one node profile based on the first tag or the second tag.

US Pat. No. 10,552,932

SYSTEMS AND METHODS FOR GENERATING FIELD-SPECIFIC HEALTH SCORES FOR A SYSTEM OF RECORD

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, a plurality of record objects of a first system of record corresponding to a data source provider, each record object of the plurality of record objects having one or more object field-value pairs, each field-value pair of the record object associating an object field value to a corresponding field of the record object;
maintaining, by the one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile of the plurality of node profiles including one or more node field-value pairs, each node field-value pair of the node profile associated with a corresponding field and a node field value, each node field-value pair generated from at least one of an electronic activity or at least one record object of a plurality of second systems of record;
identifying, by the one or more processors, a subset of node field-value pairs from the one or more node field-value pairs of the plurality of node profiles, each node field-value pair of the subset having a confidence score satisfies a threshold score;
identifying, by the one or more processors, for each record object of the first system of record, a matching node profile having at least one node field-value pair of the subset, the matching node profile identifying an entity also identified by the record object;
comparing, by the one or more processors, for a first field of the plurality of record objects, the node field value of each node field-value pair of the subset identifying the first field in the matching node profile with the object field value of a corresponding object field-value pair identifying the first field of the record object; and
generating, by the one or more processors, a field-specific health score for the first field of the plurality of record objects of the first system of record based on the comparison, the field-specific health score indicating a level of quality of the first field across the plurality of record objects.

US Pat. No. 10,535,031

SYSTEMS AND METHODS FOR ASSIGNING NODE PROFILES TO RECORD OBJECTS

People.ai, Inc., San Fra...

1. A method comprising:maintaining, by one or more processors, a plurality of node profiles, each node profile including one or more field-value pairs and updated using electronic activities identifying an entity of the node profile;
identifying, by the one or more processors, a first record object to which to assign a node profile, the first record object corresponding to a system of record, the first record object linked to a second record object of the system of record identifying a group entity and a third record object of the system of record identifying a first entity, the first record object comprising one or more field-value pairs including a stage field-value pair having a stage field and a stage value selected from a plurality of stage values, each stage value of the plurality of stage values indicating a respective proximity to a completion of an event corresponding to the first record object;
selecting, by the one or more processors, from the plurality of node profiles, a subset of node profiles that satisfy a node profile selection policy;
generating, by the one or more processors, for each node profile of the subset of node profiles, a performance profile using the electronic activities identifying the respective entity corresponding to the node profile and the one or more object field-value pairs of the first record object;
determining, by the one or more processors, for a first node profile of the subset, that a match score between the first node profile and the first record object based on the performance profile and one or more object field-value pairs of the first record object satisfies a threshold; and
storing, by the one or more processors, an association between the first node profile of the subset and the first record object based on the match score.

US Pat. No. 10,496,634

SYSTEMS AND METHODS FOR DETERMINING A COMPLETION SCORE OF A RECORD OBJECT FROM ELECTRONIC ACTIVITIES

PEOPLE.AI, INC., San Fra...

1. A method comprising:accessing, by one or more processors, data from a plurality of record objects of one or more systems of record, each record object of the plurality of record objects corresponding to a record object type and comprising one or more object fields having one or more object field-values;
selecting, by the one or more processors, a first record object of the plurality of record objects;
identifying, by the one or more processors, a plurality of electronic activities transmitted or received via electronic accounts and associated with the first record object, each of the plurality of electronic activities having a timestamp indicating a receipt time or transmission time of the respective electronic activity;
determining, by the one or more processors and responsive to parsing data from the plurality of electronic activities, at least one participant of each of the plurality of electronic activities;
determining, by the one or more processors, for the at least one participant of each of the plurality of electronic activities, at least one of a role, a title, or a department corresponding to the at least one participant;
determining, by the one or more processors, a completion score indicating a likelihood of completing an event associated with the first record object, the completion score based on the timestamp of each of the plurality of electronic activities and at least one of the role, the title, or the department of the at least one participant of each of the plurality of electronic activities; and
storing, by the one or more processors, in one or more data structures, an association between the first record object and the completion score.

US Pat. No. 10,496,636

SYSTEMS AND METHODS FOR ASSIGNING LABELS BASED ON MATCHING ELECTRONIC ACTIVITIES TO RECORD OBJECTS

PEOPLE.AI, INC., San Fra...

1. A method, comprising:accessing, by one or more processors, data from a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers;
identifying, by the one or more processors, a record object matched with or with which to match a first electronic activity of the plurality of electronic activities;
determining, by the one or more processors, a record object type of the record object that corresponds to a first record object type or a second record object type, the first record object type corresponding to a process and including a stage field including a stage value indicating a proximity to a completion of the process and the second record object type corresponding to a participant of the first electronic activity;
responsive to determining that the record object type is the first record object type,
extracting, by the one or more processors, the stage value corresponding to the stage field of the record object;
selecting, by the one or more processors, a first label based on the extracted stage value and a labeling policy, the labeling policy including a first set of one or more rules or models to associate labels based on stage values of record objects corresponding to the first record object type; and
storing, by the one or more processors, in one or more data structures, an association between the first electronic activity and the selected first label corresponding to the stage value of the record object; and
responsive to determining that the record object type is the second record object type,
determining, by the one or more processors, by parsing the first electronic activity or by identifying at least one value corresponding to a title field or department field of the record object, a first value corresponding to a title of the participant or a department of the participant;
selecting, by the one or more processors, a second label based on the determined first value corresponding to the title of the participant or the department of the participant and the labeling policy, the labeling policy including a second set of one or more rules or models to associate labels based on titles or departments of participants of electronic activities corresponding to record objects of the second record object type; and
storing, by the one or more processors, in the one or more data structures, an association between the first electronic activity and the selected second label corresponding to the first value corresponding to the title of the participant or the department of the participant.

US Pat. No. 10,489,457

SYSTEMS AND METHODS FOR DETECTING EVENTS BASED ON UPDATES TO NODE PROFILES FROM ELECTRONIC ACTIVITIES

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, data of a plurality of electronic activities transmitted or received via a plurality of electronic accounts associated with a plurality of data source providers, each electronic activity of the plurality of electronic activities corresponding to at least one of an email, a call, a calendar event or a message;
generating, by the one or more processors, by parsing data of a first subset of electronic activities of the plurality of the electronic activities, a plurality of activity field-value pairs, each activity field-value pair including an activity value associated with an activity field;
maintaining, by the one or more processors, in one or more data structures, a plurality of node profiles, each node profile of the plurality of node profiles including one or more node field-value pairs, each node field-value pair including a node value associated with a node field, each node value associated with a confidence score;
updating, by the one or more processors, a first node profile of the plurality of node profiles based on the first subset of electronic activities by adding a new value corresponding to a field, the field corresponding to a last name field, a title field, a company name field, a location field, an email address field or a phone number field of the first node profile;
maintaining, by the one or more processors, a first confidence score of a first value corresponding to the field and a second confidence score of the new value, the second confidence score of the new value based on respective contribution scores of respective electronic activities of the subset of electronic activities associated with a respective activity field-value pair corresponding to the new value, the first confidence score of the first value based on respective contribution scores of respective electronic activities of a second subset of electronic activities associated with a respective activity field-value pair corresponding to the first value;
comparing, by the one more processors, the second confidence score to the first confidence score or to a threshold corresponding to one or more event detection policies, each event detection policy used for determining a respective event type of a plurality of event types, each event type corresponding to one or more of a last name field, a title field, a company name field, a location field, an email address field or a phone number field of a respective node profile;
determining, by the one or more processors, based on the second confidence score of the new value exceeding the first confidence score or satisfying the threshold, a first event of a first event type of the plurality of event types based on the field of the first node profile to which the new value corresponds; and
storing, by the one or more processors, responsive to determining the first event, an association between the first node profile and the first event type corresponding to the first event.

US Pat. No. 10,545,980

SYSTEMS AND METHODS FOR RESTRICTING GENERATION AND DELIVERY OF INSIGHTS TO SECOND DATA SOURCE PROVIDERS

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, at least one of i) a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers or ii) a plurality of record objects of one or more systems of record associated with the one or more data source providers;
maintaining, by the one or more processors, a plurality of node profiles, each node profile of the plurality of node profiles including one or more field-value pairs, each field-value pair including a value determined from data of one or more of the plurality of electronic activities or the plurality of record objects;
detecting, by the one or more processors, from one or more electronic activities or record objects of a first data source provider of the one or more data source providers, an update to a node graph including the plurality of node profiles or corresponding to a record object of the first data source provider;
determining, by the one or more processors, a number of the one or more data source providers having respective electronic activities or record objects from which the update to the node graph or corresponding to the record object of the first data source provider can be detected; and
restricting, by the one or more processors, responsive to determining that the number does not satisfy a predetermined threshold, provisioning of a content item related to the detected update to at least one second data source provider of the one or more data source providers.

US Pat. No. 10,498,856

SYSTEMS AND METHODS OF GENERATING AN ENGAGEMENT PROFILE

PEOPLE.AI, INC., San Fra...

1. A method comprising:accessing, by one or more processors, for a first record object of a system of record of a data source provider, data from a plurality of electronic activities linked with the first record object, each electronic activity identifying one or more participants associated with the first record object, the first record object including a stage object field-value pair identifying a stage field and a stage value selected from a plurality of stage values, each stage value corresponding to a respective stage of a process and indicating a respective proximity to a completion of the process corresponding to the first record object;
identifying, by the one or more processors, for a participant of the one or more participants, from the plurality of electronic activities, a set of electronic activities including the participant;
determining, by the one or more processors, for a first stage of the process, a first metric based on a first portion of the set of electronic activities, each electronic activity of the first portion of the set having a respective timestamp associated with the first stage;
determining, by the one or more processors, for a second stage of the process, a second metric based on a second portion of the set of electronic activities, each electronic activity of the second portion of the set having a respective timestamp associated with the second stage;
determining, by the one or more processors, an engagement profile of the participant based on the first metric corresponding to the first stage and the second metric corresponding to the second stage; and
storing, by the one or more processors, in one or more data structures, an association between an identifier of the participant and the engagement profile of the participant.

US Pat. No. 10,496,681

SYSTEMS AND METHODS FOR ELECTRONIC ACTIVITY CLASSIFICATION

People.ai, Inc., San Fra...

1. A method, comprising:maintaining, by one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile including a plurality of field-value pairs;
accessing, by the one or more processors, data corresponding to a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers, the electronic activities used to update the plurality of node profiles;
extracting, by the one or more processors, from data corresponding to a first electronic activity of the plurality of electronic activities, one or more features used to determine a classification of the first electronic activity;
identifying, by the one or more processors, from the data corresponding to the first electronic activity, a sender and one or more recipients of the first electronic activity and a type of an electronic account identifier corresponding to the sender or a recipient of the one or more recipients;
determining, by the one or more processors, a confidence score indicating a likelihood that the first electronic activity is of a first classification type based on the sender and the one or more recipients of the first electronic activity, the type of the electronic account identifier and a connection profile between at least two of the sender and the one or more recipients, the connection profile based on at least one second electronic activity including the at least two of the sender and the one or more recipients as participants of the at least one second electronic activity;
storing, by the one or more processors, in one or more data structures, an association between the first electronic activity and a tag corresponding to the first classification type and the determined confidence score;
accessing, by the one or more processors, data corresponding to a second electronic activity of the plurality of electronic activities;
determining, by the one or more processors, that a sender and one or more recipients of the second electronic activity match the sender and the one or more recipients of the first electronic activity; and
updating, by the one or more processors, the determined confidence score of the first electronic activity based on a corresponding confidence score of the second electronic activity indicating that the second electronic activity is of the first classification type responsive to determining that the sender and the one or more recipients of the second electronic activity match the sender and the one or more recipients of the first electronic activity corresponding to the first classification type.

US Pat. No. 10,516,784

SYSTEMS AND METHODS FOR CLASSIFYING PHONE NUMBERS BASED ON NODE PROFILE DATA

People.ai, Inc., San Fra...

20. A non-transitory computer-readable storage medium having instructions embodied thereon, the instructions being executable by one or more processors to:maintain a plurality of node profiles including one or more field-value pairs, at least one of the field-value pairs of each node profile identifying a phone number corresponding to the node profile;
generate a plurality of activity field-value pairs from data of an electronic activity accessed by the one or more processors, each activity field-value pair of the plurality of activity field-value pairs corresponding to at least one participant of the electronic activity;
parse the electronic activity to identify a string including at least a predetermined number of numerical characters corresponding to an electronic activity phone number;
identify a first node profile of the plurality of node profiles corresponding to a sender or one or more recipients of the electronic activity to which the electronic activity phone number corresponds;
determine a phone number type to which the electronic activity phone number corresponds, the phone number type determined using at least one data structure storing respective associations between each respective second phone number of a plurality of second phone numbers and a corresponding field type identifying a phone number type of the respective second phone number, wherein each second phone number is extracted from a respective node profile of the plurality of node profiles that includes a second field-value pair that matches a corresponding second field-value pair of the first node profile, the second field-value pair identifying a group entity, the phone number type determined based on comparing at least a portion of the electronic activity phone number to data from a corresponding portion of each of the plurality of the extracted second phone numbers included in the at least one data structure; and
update the identified first node profile by adding the electronic activity phone number as a new value of a field corresponding to the determined phone number type or updating a confidence score of an existing field-value pair corresponding to the electronic activity phone number.

US Pat. No. 10,516,587

SYSTEMS AND METHODS FOR NODE RESOLUTION USING MULTIPLE FIELDS WITH DYNAMICALLY DETERMINED PRIORITIES BASED ON FIELD VALUES

PEOPLE.AI, INC., San Fra...

1. A method, comprising:maintaining, by one or more processors, a plurality of node profiles, each node profile of the plurality of node profiles corresponding to a respective entity and including node field-value pairs;
accessing, by the one or more processors, data of a plurality of electronic activities transmitted or received via at least one electronic account associated with at least one data source provider;
generating, by the one or more processors, a plurality of activity field-value pairs from data of an electronic activity of the plurality of electronic activities, each activity field-value pair of the plurality of activity field-value pairs including a respective activity value associated with a respective activity field;
determining, by the one or more processors, for a first node field-value pair that matches a first activity field-value pair of the plurality of activity field-value pairs, a first count corresponding to a first number of node profiles of the plurality of node profiles that includes the first node field-value pair;
determining, by the one or more processors, for a second node field-value pair that matches a second activity field-value pair of the plurality of activity field-value pairs, a second count corresponding to a second number of node profiles of the plurality of node profiles that includes the second node field-value pair;
determining, by the one or more processors, a first frequency score of the first activity field-value pair based on the first count and a second frequency score of the second activity field-value pair based on the second count;
assigning, by the one or more processors, a first weight to the first activity field-value pair based on the first frequency score and a second weight to the second activity field-value pair based on the second frequency score, the first weight greater than the second weight responsive to the first frequency score being less than the second frequency score;
generating, by the one or more processors, for each candidate node profile of a plurality of candidate node profiles of the plurality of node profiles, a respective match score of the candidate node profile indicating a likelihood that the electronic activity is transmitted or received by an electronic account corresponding to the candidate node profile based on the first weight assigned to the first activity field-value pair and the second weight assigned to the second activity field-value pair;
selecting, by the one or more processors, from the plurality of candidate node profiles, a node profile based on the respective match score of the node profile; and
storing, by the one or more processors, in one or more data structures, an association between the electronic activity and the node profile.

US Pat. No. 10,496,675

SYSTEMS AND METHODS FOR MERGING TENANT SHADOW SYSTEMS OF RECORD INTO A MASTER SYSTEM OF RECORD

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, data corresponding to a plurality of first tenant record objects of a first tenant system of record, each first tenant record object of the plurality of first tenant record objects comprising one or more object field-value pairs, the first tenant system of record associated with a first data source provider of a plurality of data source providers;
generating, by the one or more processors, for each first tenant record object of the first tenant system of record, a master record object for a plurality of master record objects using the first tenant record object, the master record object including one or more object field-value pairs of the corresponding first tenant record object;
accessing, by one or more processors, data corresponding to a plurality of second tenant record objects of a second tenant system of record, each second tenant record object of the second plurality of tenant record objects comprising one or more object field-value pairs, the second tenant system of record associated with a second data source provider of the plurality of data source providers;
determining, by the one or more processors, whether to match a second tenant record object of the plurality of second tenant record object with a corresponding first master record object by comparing the object field-value pairs of the second tenant record object with corresponding object field-value pairs of the master record object;
merging, responsive to determining to match the second tenant record object with the corresponding first master record object, the second tenant record object with the first master record object by adding one or more object field-value pairs of the second tenant record object to the master record object that do not match an existing object field-value pair of the master record object and updating a respective confidence score of one or more existing object field-value pairs of the master record object based on a contribution score of a corresponding object field-value pair of the second tenant record object that matches the existing object field-value pair of the master record object, the contribution score based on at least one of a trust score indicating a level of reliability of the second system of record or a timestamp corresponding to when the second tenant record object was last modified or created; and
generating, by the one or more processors, responsive to determining to not match the second tenant record object with the corresponding first master record object, a second master record object including the one or more object field-value pairs of the second tenant record object.

US Pat. No. 10,515,072

SYSTEMS AND METHODS FOR IDENTIFYING A SEQUENCE OF EVENTS AND PARTICIPANTS FOR RECORD OBJECTS

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, a plurality of first record objects of a system of record of a data source provider each record object of the plurality of record objects comprising one or more object field-value pairs and linked to one or more electronic activities;
identifying, by the one or more processors, a subset of record objects of the plurality of record objects associated with a group entity and having a first record object status, each record object of the subset of record objects including a stage field configured to be associated with one of a plurality of stage values, each stage value of the plurality of stage values corresponding to a respective proximity to a completion of a process associated with the record object;
identifying, by the one or more processors, for each record object of the subset of record objects, a first plurality of electronic activities linked to the record object, each electronic activity of the first plurality of electronic activities i) received or transmitted via one or more electronic accounts, ii) identifying one or more participants, iii) corresponding to at least one event and iv) associated with a respective stage value of the stage field of the record object;
determining, by the one or more processors, for each record object of the subset of record objects, an event-participant pattern for at least one stage value and based on the first plurality of electronic activities linked to the record object that are associated with the at least one stage value, the event-participant pattern identifying at least a first event performed by a first participant of a first participant type and a second event performed by a second participant of a second participant type, the first participant type based on at least one of a first title or a first department of the first participant and the second participant type based on at least one of a second title or a second department of the second participant;
accessing, by the one or more processors, a second record object of the system of record of the data source provider, the second record object comprising one or more object field-value pairs and linked to a second plurality of electronic activities and having a stage field associated with the at least one stage value;
identifying, by the one or more processors, the second plurality of electronic activities linked with the second record object and associated with the at least one stage value of the stage field of the second record object;
determining, by the one or more processors, from the identified second plurality of electronic activities linked with the second record object and based on the event-participant pattern, that the first event is performed by a respective first participant of the first participant type and the second event is not yet performed by any respective second participant of the second participant type;
generating, by the one or more processors, a content item identifying an action based on the second event not yet performed by any respective participant of the second participant type; and
transmitting, by the one or more processors, the content item to a device of a participant of at least one electronic activity of the second plurality of electronic activities linked with the second record object.

US Pat. No. 10,521,443

SYSTEMS AND METHODS FOR MAINTAINING A TIME SERIES OF DATA POINTS

PEOPLE.AI, INC., San Fra...

1. A method, comprising:accessing, by one or more processors, at least one of a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers or a plurality of record objects of one or more systems of record associated with the one or more data source providers;
maintaining, by the one or more processors, an association between each electronic activity or record object and a timestamp respectively corresponding to when the electronic activity was sent or received by an electronic activity account or when the record object was last updated;
maintaining, by the one or more processors a plurality of node profiles, each node profile of the plurality of node profiles including one or more field-value pairs, each field-value pair including a value determined from data of one or more of the plurality of electronic activities or the plurality of record objects; and
generating, by the one or more processors, for a particular time, a confidence score of a particular value of a field-value pair of a node profile only using the data of the one or more of the plurality of electronic activities or the plurality of record objects that correspond to the field-value pair of the particular value and have a corresponding timestamp prior to or contemporaneous with the particular time.

US Pat. No. 10,585,880

SYSTEMS AND METHODS FOR GENERATING CONFIDENCE SCORES OF VALUES OF FIELDS OF NODE PROFILES USING ELECTRONIC ACTIVITIES

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, at least one of i) data from a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers or ii) a plurality of record objects of one or more systems of record associated with the one or more data source providers, the one or more processors maintaining a plurality of node profiles and configured to update the plurality of node profiles using at least one of the data from the plurality of electronic activities or the plurality of record objects;
identifying, by the one or more processors, a node profile of the plurality of node profiles including a plurality of fields, each field of the plurality of fields including one or more value data structures, each value data structure of the one or more value data structures corresponding to a value and further including one or more entries, each entry of the one or more entries corresponding to respective one or more data points that include a string that matches the value of the value data structure, each data point of the one or more data points corresponding to a respective electronic activity of the plurality of electronic activities or a respective record object of the plurality of record objects;
determining, for at least one data point of the one or more data points included in a respective value data structure of a value of a field of the plurality of fields of the node profile, a contribution score of the at least one data point based on a time corresponding to when the at least one data point was generated or updated and a trust score assigned to a system of record corresponding to the at least one data point, the trust score based on comparing field values of object fields included in record objects of the system of record to values of fields of one or more node profiles having respective confidence scores above a threshold; and
generating, by the one or more processors, a confidence score of the value of the field of the node profile based on the contribution score of the at least one data point.

US Pat. No. 10,657,132

SYSTEMS AND METHODS FOR FORECASTING RECORD OBJECT COMPLETIONS

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, for a first record object of a system of record of a data source provider, data of a plurality of electronic activities transmitted or received via electronic accounts and associated with the first record object, each electronic activity of the plurality of electronic activities identifying one or more participants associated with the first record object, the first record object including a first object field-value pair identifying a stage of a process corresponding to the first record object;
parsing, by the one or more processors, the data of each electronic activity of the plurality of electronic activities associated with the first record object;
determining, by the one or more processors, for a first participant of the one or more participants, a role of the first participant, the role of the first participant determined based on one or more of a seniority of the first participant, a department of the first participant or a second object field-value pair of the first record object identifying an identifier of the first participant as a value of a field of the first record object, the field identifying the role of the first participant;
determining, by the one or more processors, for the first record object, a likelihood that the process of the first record object will be completed within a predetermined time period based on the first object field-value pair identifying the stage of the process corresponding to the first record object, the role of the first participant and the data of each electronic activity of the plurality of electronic activities; and
storing, by the one or more processors, in one or more data structures, an association between the first record object and the likelihood that the process of the first record object will be completed within the predetermined time period.

US Pat. No. 10,599,653

SYSTEMS AND METHODS FOR LINKING ELECTRONIC ACTIVITIES TO NODE PROFILES

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, a plurality of electronic activities transmitted or received via electronic accounts associated with a plurality of data source providers, the one or more processors maintaining a plurality of node profiles and configured to update the plurality of node profiles using the plurality of electronic activities;
identifying, by the one or more processors, from data included in an electronic activity of the plurality of electronic activities, a plurality of strings;
generating, by the one or more processors, a plurality of activity field-value pairs from the plurality of strings using an electronic activity parsing policy;
comparing, by the one or more processors, the plurality of activity field-value pairs to respective node field-value pairs of one or more node profiles maintained by the one or more processors;
generating, by the one or more processors, for each node profile of the plurality of node profiles, a match score of the node profile indicating a likelihood that the electronic activity is transmitted or received by an account corresponding to the node profile based on comparing the plurality of activity field-value pairs to respective node field-value pairs of the node profile;
determining, by the one or more processors, a subset of the plurality of node profiles with which to link the electronic activity responsive to determining that the match score of each node profile of the subset satisfies a threshold;
determining, by the one or more processors, for a first node profile of the subset of the plurality of node profiles, that a first value of a first activity field-value pair of the electronic activity matches a first value of a first field of the first node profile; and
updating, by the one or more processors, a value data structure corresponding to the first value of the first field of the first node profile by adding a first entry identifying the electronic activity to the value data structure.

US Pat. No. 10,657,129

SYSTEMS AND METHODS FOR MATCHING ELECTRONIC ACTIVITIES TO RECORD OBJECTS OF SYSTEMS OF RECORD WITH NODE PROFILES

People.ai, Inc., San Fra...

1. A method comprising:maintaining, by one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile including a plurality of fields, each field of the plurality of fields including one or more node field values;
accessing, by the one or more processors, a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers, the one or more processors configured to update the plurality of node profiles using the plurality of electronic activities;
maintaining, by the one or more processors, a plurality of record objects of one or more systems of record, each record object of the plurality of record objects comprising one or more object fields having one or more object field values;
extracting, by the one or more processors, data included in an electronic activity of the plurality of electronic activities;
matching, by the one or more processors, the electronic activity to at least one node profile of the plurality of node profiles based on determining that the extracted data of the electronic activity and the one or more values of the fields of the at least one node profile satisfy a node profile matching policy;
matching, by the one or more processors, the electronic activity to at least one record object of the plurality of record objects based on the extracted data of the electronic activity and object values of the at least one record object by:
identifying, by the one or more processors, responsive to applying at least one matching policy of a plurality of matching policies for identifying record objects based on one or more recipients of the electronic activity and a sender of the electronic activity, a set of record objects with which to match the electronic activity, each record object of the set identified based on the one or more recipients or the sender of the electronic activity; and
selecting by the one or more processors, the at least one record object included in the set of record objects; and
storing, by the one or more processors, in a data structure, an association between the electronic activity and the at least one record object.

US Pat. No. 10,657,130

SYSTEMS AND METHODS FOR GENERATING A PERFORMANCE PROFILE OF A NODE PROFILE INCLUDING FIELD-VALUE PAIRS USING ELECTRONIC ACTIVITIES

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, data of a plurality of first electronic activities linked to a first node profile maintained by the one or more processors and having an associated timestamp within a time period;
for each first electronic activity of the plurality of first electronic activities:
determining, by the one or more processors, a type of the first electronic activity;
selecting, by the one or more processors, a feature extraction policy to generate a first feature array for the first electronic activity based on the type of the first electronic activity;
parsing, by the one or more processors, the data of the first electronic activity;
generating, by the one or more processors, using a language complexity determination engine, a language complexity score indicating a level of language complexity of the first electronic activity;
determining, by the one or more processors, a character count or a word count of the first electronic activity;
determining, by the one or more processors, an estimated amount of time to generate the first electronic activity using the language complexity score and the character count or the word count; and
generating, by the one or more processors, the first feature array for the first electronic activity based on the type of the first electronic activity and the estimated amount of time to generate the first electronic activity;
generating, by the one or more processors, a first performance profile of the first node profile for the time period by providing the generated first feature array for each first electronic activity to one or more models trained using second feature arrays corresponding to second electronic activities of second node profiles, each second node profile assigned a respective second performance profile; and
storing, by the one or more processors, an association between the first node profile and the first performance profile.

US Pat. No. 10,657,131

SYSTEMS AND METHODS FOR MANAGING THE USE OF ELECTRONIC ACTIVITIES BASED ON GEOGRAPHIC LOCATION AND COMMUNICATION HISTORY POLICIES

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, data of a plurality of emails transmitted or received via electronic accounts associated with a plurality of data source providers, the one or more processors maintaining a plurality of user profiles and configured to update the plurality of user profiles using the plurality of emails;
identifying, by the one or more processors, from data included in a first email of the plurality of emails, a first user profile with which to associate the first email;
determining, by the one or more processors, from at least one data structure maintaining an association between a first subset of the plurality of emails and the first user profile, a first number of emails transmitted by at least one first electronic account of the first user profile to at least one second electronic account of a second user profile;
restricting, by the one or more processors, storing the data of the first email in one or more data structures responsive to determining that the first number of emails fails to satisfy a threshold;
identifying, by the one or more processors, a second email associated with the first user profile, the second email transmitted by the at least one first electronic account of the first user profile to the at least one second electronic account of the second user profile;
updating, by the one or more processors, a count of emails transmitted by the at least one first electronic account of the first user profile to the at least one second electronic account of the second user profile from the first number of emails to a second number of emails transmitted by the at least one first electronic account of the first user profile to the at least one second electronic account of the second user profile; and
storing, by the one or more processors, data of the second email in the one or more data structures responsive to determining that the count of emails satisfies the threshold.

US Pat. No. 10,649,998

SYSTEMS AND METHODS FOR DETERMINING A PREFERRED COMMUNICATION CHANNEL BASED ON DETERMINING A STATUS OF A NODE PROFILE USING ELECTRONIC ACTIVITIES

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, data of a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers;
maintaining, by the one or more processors, a plurality of node profiles corresponding to a plurality of unique entities, each node profile of the plurality of node profiles including one or more node field-value pairs;
identifying, by the one or more processors, for a node profile of the plurality of node profiles, a subset of the plurality of electronic activities transmitted or received by the electronic accounts;
identifying, by the one or more processors, for each electronic activity of the subset of the plurality of electronic activities, a type of electronic activity and a respective timestamp corresponding to the electronic activity, wherein the type of electronic activity includes an email type or a calendar event type;
generating, by the one or more processors, for the node profile of the plurality of node profiles, a communication mode schedule identifying a plurality of communication modes over which to communicate with a first entity corresponding to the node profile at one or more time periods based on the respective timestamp and the type of each electronic activity of the subset of the plurality of electronic activities;
selecting, by the one or more processors, responsive to detecting a condition to transmit a first notification, a first communication mode from the plurality of communication modes based on a time associated with transmission of the first notification and the generated communication mode schedule; and
transmitting, by the one or more processors, the first notification to a first device of the first entity via the first communication mode.

US Pat. No. 10,649,999

SYSTEMS AND METHODS FOR GENERATING PERFORMANCE PROFILES USING ELECTRONIC ACTIVITIES MATCHED WITH RECORD OBJECTS

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, a plurality of first record objects of a system of record of a data source provider, each first record object of the plurality of first record objects comprising one or more object fields having one or more object field values, each of the plurality of first record objects associated with one or more electronic activities;
identifying, by the one or more processors, from the plurality of first record objects, a subset of first record objects associated with a node profile corresponding to an entity;
identifying, by the one or more processors, for each first record object of the subset of first record objects, electronic activities linked to the first record object;
determining, by the one or more processors, for each first record object of the subset of first record objects, a respective entity engagement profile for the entity based on i) the electronic activities linked to the first record object and ii) one or more object field-value pairs of the first record object;
generating, by the one or more processors, a composite entity engagement profile of the entity based on each respective entity engagement profile corresponding to each first record object of the subset of first record objects;
storing, by the one or more processors, in one or more data structures, an association between the entity and the composite entity engagement profile;
identifying, by the one or more processors, a second record object having one or more object field-value pairs; and
matching, by the one or more processors, the second record object with the entity based on i) the composite entity engagement profile of the entity and ii) the one or more object field-value pairs of the second record object.

US Pat. No. 10,678,795

SYSTEMS AND METHODS FOR UPDATING MULTIPLE VALUE DATA STRUCTURES USING A SINGLE ELECTRONIC ACTIVITY

People.ai, Inc., San Fra...

1. A system comprising:one or more processors configured by machine-readable instructions to:
access data of a plurality of electronic activities transmitted or received via electronic accounts associated with one or more data source providers, wherein the one or more processors are further configured to maintain a plurality of node profiles and to update the plurality of node profiles using the plurality of electronic activities, each node profile of the plurality of node profiles including a plurality of fields, each field of the plurality of fields including one or more value data structures, each value data structure of the one or more value data structures including a respective value and one or more respective entries corresponding to respective one or more data points;
determine from a first electronic activity of the plurality of electronic activities that is transmitted from a sender to a recipient, a first activity field-value pair associated with the sender of the first electronic activity, a second activity field-value pair associated with the sender of the first electronic activity, and a third activity field-value pair associated with the recipient of the first electronic activity;
identify a first node profile of the plurality of node profiles that includes a first node field-value pair that matches the first activity field-value pair determined from the first electronic activity and a second node field-value pair that matches the second activity field-value pair of the first electronic activity, the first node profile corresponding to the sender of the first electronic activity;
update a first value data structure corresponding to a first value included in the first node field-value pair by adding a first entry to the first value data structure identifying the first electronic activity;
update a second value data structure corresponding to a second value included in the second node field-value pair by adding a second entry to the second value data structure identifying the first electronic activity;
identify a second node profile of the plurality of node profiles that includes a third node field-value pair that matches the third activity field-value pair determined from the first electronic activity, the second node profile corresponding to the recipient of the first electronic activity; and
update a third value data structure corresponding to a third value included in the third node field-value pair of the second node profile by adding a third entry to the third value data structure identifying the first electronic activity.

US Pat. No. 10,678,796

SYSTEMS AND METHODS FOR MATCHING ELECTRONIC ACTIVITIES TO RECORD OBJECTS USING FEEDBACK BASED MATCH POLICIES

People.ai, Inc., San Fra...

1. A method comprising:accessing, by one or more processors, electronic activity data of a plurality of electronic activities transmitted or received via electronic accounts of one or more data source providers;
accessing, by the one or more processors, record object data of a plurality of record objects of one or more systems of record, each record object of the plurality of record objects corresponding to a record object type and comprising one or more object fields having one or more object field values, the one or more systems of record corresponding to the one or more data source providers;
identifying, by the one or more processors, responsive to applying a matching model for identifying candidate record objects, a plurality of candidate record objects with which to match a first electronic activity of the plurality of electronic activities, the matching model used to generate a respective match score between the first electronic activity and a respective candidate record object of the plurality of candidate record objects;
selecting, by the one or more processors, a first record object from the plurality of candidate record objects based on a first match score between the first electronic activity and the first record object;
receiving, by the one or more processors, instructions indicating that the first electronic activity is to be matched with a second record object of the plurality of record objects;
storing, by the one or more processors, in a first data structure of the one or more data structures, an electronic activity identifier identifying the first electronic activity, a record object identifier identifying the second record object and an association between the electronic activity identifier identifying the first electronic activity and the record object identifier indicating the second record object;
configuring, by the one or more processors, the matching model in a first configuration by training the matching model using the first data structure, the matching model configured to output a second match score between the first electronic activity and the second record object greater than the first match score;
identifying, by the one or more processors, a second electronic activity of the plurality of electronic activities;
determining, by the one or more processors, using a thread detection policy, that the second electronic activity and the first electronic activity are part of an electronic activity thread; and
matching, by the one or more processors, the second electronic activity to the second record object based on determining that the second electronic activity and the first electronic activity are part of the electronic activity thread.

US Pat. No. 10,679,001

SYSTEMS AND METHODS FOR AUTO DISCOVERY OF FILTERS AND PROCESSING ELECTRONIC ACTIVITIES USING THE SAME

People.ai, Inc., San Fra...

1. A method, comprising:accessing, by one or more processors, from a plurality of electronic accounts corresponding to member entities associated with a group entity, data corresponding to a plurality of first electronic activities, each first electronic activity of the plurality of first electronic activities accessible via a respective electronic account of a member entity belonging to the group entity;
for each first electronic activity of the plurality of first electronic activities:
identifying, by the one or more processors, the group entity associated with the electronic account via which the first electronic activity is accessible;
selecting, by the one or more processors, a first filtering model based on the group entity, the first filtering model trained to indicate whether to restrict further processing of accessed electronic activities using first training data corresponding to a plurality of second electronic activities, each second electronic activity of the plurality of second electronic activities represented using a first plurality of structured data tags, at least one second electronic activity of the plurality of second electronic activities labeled to be restricted from further processing;
generating, by the one or more processors, a second plurality of structured data tags for the first electronic activity by identifying one or more keywords of the first electronic activity, one or more character strings of the first electronic activity satisfying a predetermined regular expression pattern, or one or more participants of the first electronic activity;
applying, by the one or more processors, the selected first filtering model to the second plurality of structured data tags for the first electronic activity to determine whether the first electronic activity satisfies a first restriction condition;
determining, by the one or more processors, a category to which the member entity belongs based on at least one value of a job title field, a seniority field or a department field of a profile corresponding to the member entity, the at least one value identified from electronic activities identifying the electronic account of the member entity;
selecting, by the one or more processors, a second filtering model based on the category of the member entity, the second filtering model trained to indicate whether to restrict further processing of accessed electronic activities using second training data corresponding to a plurality of third electronic activities, each third electronic activity of the plurality of third electronic activities represented using a third plurality of structured data tags, at least one third electronic activity of the plurality of third electronic activities labeled to be restricted from further processing;
applying, by the one or more processors, the selected second filtering model to the second plurality of structured data tags for the first electronic activity to determine whether the first electronic activity satisfies a second restriction condition; and
responsive to the first electronic activity not satisfying the first restriction condition and not satisfying the second restriction condition, matching, by the one or more processors, the first electronic activity to a record object of a system of record corresponding to the group entity.

US Pat. No. 10,671,612

SYSTEMS AND METHODS FOR NODE DEDUPLICATION BASED ON A NODE MERGING POLICY

People.ai, Inc., San Fra...

1. A method, comprising:maintaining, by one or more processors, a first node profile including a plurality of first field-value pairs, each first field-value pair of the plurality of first field-value pairs identifying a corresponding first field and a corresponding first value;
maintaining, by the one or more processors, a plurality of second node profiles, each second node profile of the plurality of second node profiles including a plurality of second field-value pairs, each second field-value pair of the plurality of second field-value pairs identifying a corresponding second field and a corresponding second value;
assigning, by the one or more processors, to each first field-value pair of the first node profile, a respective weight based on i) a number of second field-value pairs included in the plurality of second node profiles that match the first field-value pair of the first node profile or ii) a confidence score of the first value of the first field-value pair, the confidence score based on a number of data points that i) identify the first field-value pair and ii) are stored in association with the first node profile;
determining, by the one or more processors, using the respective weight assigned to each first field-value pair of the first node profile, that the first node profile and a candidate second node profile of the plurality of second node profiles satisfy a node profile merging policy; and
merging, by the one or more processors, the first node profile and the candidate second node profile responsive to determining that the first node profile and the candidate second node profile satisfy the node profile merging policy.