# US 11,451,638 B2 · Systems and methods for matching electronic activities directly to record objects of systems of record

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,451,638 B2
- Document ID: US11451638B2
- Status: Granted
- Kind: B2
- Application number: 16/792,676
- Filed: 2020-02-17
- Published: 2020-06-11
- Granted: 2022-09-20
- Earliest claimed: 2018-05-24
- Assignees: People. ai, Inc.
- Applicants: People. ai, Inc.
- Inventors: Oleg Rogynskyy
- Web page: https://patentgrep.com/patent/US11451638B2

## CPC

- G06Q 10/107: Computer-aided management of electronic mailing [e-mailing]
- G06F 7/14: Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
- G06F 9/542: {Event management; Broadcasting; Multicasting; Notifications}
- G06F 11/3024: {where the computing system component is a central processing unit [CPU]}
- G06F 11/3452: {Performance evaluation by statistical analysis}
- G06F 11/3495: {for systems}
- G06F 16/122: {using management policies (point-in-time backing up or restoration of persistent data G06F11/1446; file migration policies for HSM systems G06F16/185)}
- G06F 16/1734: {Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs}
- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 16/182: Distributed file systems
- G06F 16/212: {with details for data modelling support}
- G06F 16/215: Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
- G06F 16/219: {Managing data history or versioning (querying versioned data G06F16/2474; querying temporal data G06F16/2477)}
- G06F 16/22: Indexing; Data structures therefor; Storage structures
- G06F 16/221: {Column-oriented storage; Management thereof}
- G06F 16/2228: {Indexing structures}
- G06F 16/2264: {Multidimensional index structures}
- G06F 16/2272: {Management thereof}
- G06F 16/23: Updating
- G06F 16/235: {Update request formulation}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/2386: {Bulk updating operations (data conversion details G06F16/258)}
- G06F 16/245: Query processing
- G06F 16/24558: {Binary matching operations}
- G06F 16/24564: {Applying rules; Deductive queries}
- G06F 16/2457: with adaptation to user needs
- G06F 16/24575: {using context}
- G06F 16/24578: {using ranking}
- G06F 16/2477: {Temporal data queries}
- G06F 16/254: {Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses}
- G06F 16/256: {in federated or virtual databases}
- G06F 16/26: Visual data mining; Browsing structured data
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F 16/28: Databases characterised by their database models, e.g. relational or object models
- G06F 16/285: {Clustering or classification}
- G06F 16/288: {Entity relationship models}
- G06F 16/289: {Object oriented databases}
- G06F 16/29: Geographical information databases
- G06F 16/313: {Selection or weighting of terms for indexing}
- G06F 16/337: {Profile generation, learning or modification}
- G06F 16/355: Creation or modification of classes or clusters
- G06F 16/901: Indexing; Data structures therefor; Storage structures (for retrieval from the web G06F16/951)
- G06F 16/9024: {Graphs; Linked lists (G06F16/9027 takes precedence)}
- G06F 16/90344: {by using string matching techniques}
- G06F 16/9035: Filtering based on additional data, e.g. user or group profiles
- G06F 16/906: Clustering; Classification
- G06F 16/93: Document management systems
- G06F 16/9535: Search customisation based on user profiles and personalisation
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 21/6245: {Protecting personal data, e.g. for financial or medical purposes}
- G06F 40/20: Natural language analysis (semantic analysis of natural language G06F40/30)
- G06F 40/237: Lexical tools
- G06F 40/295: Named entity recognition
- G06F 40/30: Semantic analysis
- G06N 3/08: Learning methods
- G06N 3/09: Supervised learning
- G06N 5/022: Knowledge engineering; Knowledge acquisition
- G06N 5/025: Extracting rules from data
- G06N 5/04: Inference or reasoning models
- G06N 7/02: using fuzzy logic (computing arrangements based on biological models G06N3/00; computing arrangements using knowledge-based models G06N5/00)
- G06Q 10/04: Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem" (market predictions or forecasting for commercial activities G06Q30/0202)
- G06Q 10/063114: {Status monitoring or status determination for a person or group}
- G06Q 10/06312: {Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling}
- G06Q 10/06315: {Needs-based resource requirements planning or analysis}
- G06Q 10/06393: {Score-carding, benchmarking or key performance indicator [KPI] analysis}
- G06Q 10/06398: {Performance of employee with respect to a job function}
- G06Q 10/109: Time management, e.g. calendars, reminders, meetings or time accounting
- G06Q 10/1091: Recording time for administrative or management purposes
- G06Q 10/1093: Calendar-based scheduling for persons or groups
- G06Q 10/40: Business processes related to social networking or social networking services
- G06Q 30/0201: Market modelling; Market analysis; Collecting market data
- G06Q 50/22: Social work or social welfare, e.g. community support activities or counselling services
- G16H 50/20: for computer-aided diagnosis, e.g. based on medical expert systems
- H04L 12/14: Charging, metering or billing arrangements specially adapted for data communications, e.g. authentication, authorisation and accounting [AAA] framework
- H04L 12/1831: {Tracking arrangements for later retrieval, e.g. recording contents, participants activities or behavior, network status}
- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 41/14: Network analysis or design
- H04L 43/026: using flow identification
- H04L 43/045: for graphical visualisation of monitoring data
- H04L 43/062: related to network traffic
- H04L 43/065: related to network devices
- H04L 43/067: using time frame reporting
- H04L 43/0876: Network utilisation, e.g. volume of load or congestion level
- H04L 43/14: {using software, i.e. software packages (network security related monitoring H04L63/1408)}
- H04L 51/046: Interoperability with other network applications or services
- H04L 51/212: using filtering or selective blocking
- H04L 51/234: for tracking messages
- H04L 51/42: Mailbox-related aspects, e.g. synchronisation of mailboxes
- H04L 61/45: Network directories; Name-to-address mapping
- H04L 67/125: involving control of end-device applications over a network
- H04L 67/30: Profiles
- H04L 67/303: Terminal profiles
- H04L 67/306: User profiles
- H04L 67/535: {Tracking the activity of the user (network monitoring arrangements H04L43/00; recording of computer activity G06F11/34)}
- H04M 3/436: Arrangements for screening incoming calls {, i.e. evaluating the characteristics of a call before deciding whether to answer it (based on the calling party profile H04M3/42059; based on location H04M3/42348; based on presence H04M3/42365; diversion H04M3/54)}
- H04M 3/5175: {Call or contact centers supervision arrangements}
- H04M 15/00: Arrangements for metering, time-control or time indication {; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP}
- H04M 15/41: {Billing record details, i.e. parameters, identifiers, structure of call data record [CDR]}
- H04M 15/58: {based on statistics of usage or network monitoring}
- H04M 15/60: {based on actual use of network resources}
- H04M 15/66: {Policy and charging system}
- H04M 15/755: {Account identification}
- H04W 4/24: Accounting or billing
- G06F 40/205: Parsing
- G06N 20/00: Machine learning
- G06Q 10/10: Office automation; Time management
- G16H 15/00: ICT specially adapted for medical reports, e.g. generation or transmission thereof
- G16H 50/30: for calculating health indices; for individual health risk assessment
- H04L 12/1407: {Policy-and-charging control [PCC] architecture}
- H04L 43/08: Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L 61/4594: Address books, i.e. directories containing contact information about correspondents (telephone directories in user terminals H04M1/27453)
- H04L 2101/00: Indexing scheme associated with group H04L61/00
- H04L 2101/35: containing special prefixes
- H04L 2101/37: E-mail addresses
- H04M 3/2218: {Call detail recording}
- H04M 3/56: Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities (video conference systems H04N7/15)
- H04M 15/50: {for cross-charging network operators}
- H04M 2203/556: Statistical analysis and interpretation
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G16H: HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

The system described herein can automatically match, link, or otherwise associate electronic activities with one or more record objects. For an electronic activity that is eligible or qualifies to be matched with one or more record objects, the system can identify one or more set of rules or rule sets. Using the rule sets, the system can identify candidate record objects. The system can then rank the identified candidate record objects to select one or more record objects with which to associate the electronic activity. The system can then store an association between the electronic activity and the selected one or more record objects.

## Claims

### Claim 1

A method comprising:
accessing, by one or more processors, data of a plurality of electronic activities transmitted or received via electronic accounts of a plurality of data source providers;
accessing, by the one or more processors, a plurality of customer relationship management (CRM) record objects of a plurality of CRM systems, each CRM record object of the plurality of CRM record objects corresponding to a record object type including an account record object type, an opportunity record object type and a contact record object type, each CRM record object comprising CRM object field-value pairs, the plurality of CRM systems corresponding to the plurality of data source providers;
storing, by the one or more processors, in one or more data structures controlled by the one or more processors, for each CRM record object of the plurality of CRM record objects, a corresponding data record object including data field-value pairs corresponding to the object field-value pairs of the CRM record object;
generating, by the one or more processors, activity field-value pairs for the electronic activity, the activity field-value pairs including at least one first activity field-value pair identifying a sender of the electronic activity and at least one second activity field-value pair identifying a recipient of the electronic activity;
determining, by the one or more processors, that the electronic activity is to be matched to one or more data record objects responsive to comparing the data of the electronic activity to one or more rules for restricting electronic activities from being matched to data record objects;
determining, by the one or more processors, a data source provider associated with providing the one or more processors access to an electronic activity of the plurality of electronic activities;
identifying, by the one or more processors, from the plurality of CRM systems, a CRM system corresponding to the determined data source provider, the CRM system including a plurality of candidate record objects to which to match the electronic activity;
determining, by the one or more processors, that the electronic activity is to be matched to at least one data record object of the plurality of data record objects corresponding to the identified CRM system;
identifying, by the one or more processors, responsive to applying a policy including one or more first matching rules for identifying candidate data record objects based on the sender of the electronic activity associated with a domain name corresponding to the data source provider and one or more second matching rules for identifying candidate data record objects based on the recipient of the electronic activity associated with a domain name corresponding to an account record object of the CRM system, one or more candidate data record objects to which to match the electronic activity,
wherein applying the policy includes matching the at least one first activity-field value pair identifying the sender to one or more data field-value pairs of the candidate data record objects and matching the at least one second activity field-value pair identifying the recipient to one or more data field-value pairs of the candidate record objects;
selecting, by the one or more processors, from the candidate data record objects, at least one candidate data record object based on the at least one candidate data record object including data field-value pairs satisfying the at least one first rule and the at least one second rule;
storing, by the one or more processors, in the one or more data structures, an association between the selected at least one candidate data record object and the electronic activity; and
transmitting, by the one or more processors, at least one instruction to a server of the CRM system to store a second association between a CRM record object corresponding to the at least one candidate data record object and the electronic activity.

### Claim 2 (depends on 1)

The method of claim 1, wherein identifying the CRM system corresponding to the determined data source provider comprises identifying, by the one or more processors, the CRM system based on a domain associated with an email address of the sender of the electronic activity.

### Claim 3 (depends on 1)

The method of claim 1, wherein determining, responsive to applying the first policy, that the electronic activity is to be matched to at least one record object of the identified CRM system comprises determining that the electronic activity does not satisfy one or more filtering rules configured to cause the one or more processors to restrict the electronic activity from being matched to the at least one record object, the one or more filtering rules including at least one of i) a keyword rule configured to restrict electronic activities including a predetermined keyword; ii) a regex pattern rule configured to restrict electronic activities including one or more character strings that match a predetermined regex pattern; iii) a logic-based rule configured to restrict electronic activities based on the participants of the electronic activities satisfying a predetermined group of participants.

### Claim 4 (depends on 3)

The method of claim 3, wherein the filtering rules include at least one filtering rule defined by the data source provider of the electronic activity and the system of record to which to match the electronic activity.

### Claim 5 (depends on 3)

The method of claim 3, wherein determining, responsive to applying the first policy, that the electronic activity is to be matched to at least one record object of the identified system of record comprises at least one of:
determining that the electronic activity does not include one or more predetermined words included in a list of restricted words;
determining that the electronic activity does not include any character strings that have a regular expression (regex) pattern that matches a predefined regex pattern included in a list of restricted regex patterns; or
determining that the sender and at least one of the one or more recipients match a list of restricted sender-recipient pairs.

### Claim 6 (depends on 1)

The method of claim 1, wherein identifying one or more candidate record objects further comprises:
identifying, by the one or more processors, responsive to applying the one or more first matching rules, a first set of candidate record objects to which to match the electronic activity;
identifying, by the one or more processors, responsive to applying the one or more second matching rules, a second set of candidate record objects to which to match the electronic activity; and
wherein selecting at least one candidate record object includes 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.

### Claim 7 (depends on 6)

The method of claim 6, further comprising, receiving, from the data source provider, at least one instruction to select a subset of the one or more first matching rules or the one or more second matching rules and assign a first priority to a first matching rule of the subset and assign a second priority level to a second matching rule of the subset.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
determining, by the one or more processors, that a first electronic activity previously matched to a first CRM record object of the data source provider is matched to a second CRM record object of the data source provider;
determining, by the one or more processors, one or more matching policies of the data source provider that apply to the first electronic activity; and
updating, by the one or more processors, responsive to determining that the first electronic activity previously matched to the first CRM record object is matched to the second CRM record object, the one or more matching policies for the data source provider such that the one or more processors can match a second electronic activity including the participants of the first electronic activity to the second CRM record object.

### Claim 9 (depends on 6)

The method of claim 6, wherein identifying, responsive to applying the one or more second matching rules, the second set of candidate record objects comprises identifying one or more candidate record objects of a first record object type based on the recipients of the electronic activity.

### Claim 10 (depends on 6)

The method of claim 6, wherein the first set of rules includes a rule to identify one or more data record objects of a first record object type based on an object field value of the data record object that identifies one or more nodes and wherein identifying, responsive to applying the one or more first matching rules, the first set of candidate data record objects comprises identifying one or more candidate data record objects of the first record object type responsive to determining that the one or more of the participants are identified by the object field value.

### Claim 11 (depends on 10)

The method of claim 10, wherein the object field value is a value of a first object field corresponding to an object owner that identifies an owner of the data record object or a second object field corresponding to a team that identifies a group of people linked with the data record object.

### Claim 12 (depends on 6)

The method of claim 6, wherein identifying, responsive to applying the second policy, the first set of candidate data record objects comprises identifying a particular data record object responsive to determining that the electronic activity includes a predetermined character string that satisfies a rule to match electronic activities including the character string to the particular data record object.

### Claim 13 (depends on 1)

The method of claim 1, further comprising retrieving, from one or more second servers, a first plurality of CRM record objects corresponding to a first CRM system of a first data source provider and a second plurality of CRM record objects corresponding to a second CRM system of a second data source provider.

### Claim 14 (depends on 1)

The method of claim 1, further comprising:
assigning, by the one or more processors, one or more tags to the electronic activity based on a first character string included in a body of the electronic activity; ii) a second character string included in a metadata of the electronic activity; or iii) other electronic activity.

### Claim 15 (depends on 14)

The method of claim 14, further comprising identifying, by the one or more processors, at least one candidate data record object of the plurality of data record objects based on one or more tags assigned to the electronic activity.

### Claim 16 (depends on 1)

The method of claim 1, further comprising determining, by the one or more processors, for at least one of the participants of the electronic activity, a respective unique identifier used by the CRM system corresponding to the data source provider to represent the participant.

### Claim 17 (depends on 1)

The method of claim 1, wherein transmitting the at least one instruction to the server of the CRM system comprises transmitting, by the one or more processors, a plurality of instructions including the at least one instruction in a batch process for updating multiple CRM record objects of the CRM system.
