# US 12,222,966 B2 · Generating clusters based on messaging system activity

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

- Number: US 12,222,966 B2
- Document ID: US12222966B2
- Status: Granted
- Kind: B2
- Application number: 17/328,540
- Filed: 2021-05-24
- Published: 2021-09-09
- Granted: 2025-02-11
- Earliest claimed: 2018-04-04
- Assignees: Snap Inc.
- Applicants: Snap Inc.
- Inventors: Anatoli Chklovski; Douglas Cohen; Scott Lippert
- Web page: https://patentgrep.com/patent/US12222966B2

## CPC

- G06F 16/285: {Clustering or classification}
- H04L 51/04: Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L 51/216: Handling conversation history, e.g. grouping of messages in sessions or threads
- H04L 51/52: for supporting social networking services
- H04L 67/535: {Tracking the activity of the user (network monitoring arrangements H04L43/00; recording of computer activity G06F11/34)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system analyzes user activity data generated by computing devices associated with a plurality of users in a messaging system to extract a random user from the plurality of users. Based on determining that user activity data associated with the random user comprises a consistent pattern, a cluster associated with the consistent pattern is generated and the random user is added to the cluster. Then user activity data for the other users in the plurality of users is analyzed to determine whether user activity data for each of the other users comprises a similar pattern as the generated cluster. Each user that is determined to be associated with user activity data comprising a similar pattern as the consistent pattern of the generated cluster is added to the generated cluster and user activity data associated with each user added to the generated cluster is removed from the user activity data.

## Claims

### Claim 1

A computer-implemented method comprising:
determining, based on user activity data generated by a plurality of computing devices associated with a plurality of users in a messaging computing system, when each user of the plurality of users meets a threshold time spent accessing a messaging application related to the messaging computing system during a subset of defined time periods;
summarizing only user activity data for the subset of defined time periods when each user of the plurality of users meets the threshold time spent accessing the messaging application related to the messaging computing system;
storing the summarized user activity data for each user for the subset of defined time periods during which each user meets the threshold time spent accessing the messaging application;
extracting a random user from the plurality of users;
determining the subset of defined time periods during which the random user meets the threshold time spent accessing the messaging application;
generating a new cluster corresponding to a consistent pattern of activity comprising the subset of defined time periods during which the random user meets the threshold time spent accessing the messaging application and adding the random user to the new cluster;
analyzing, for each user of the other users in the plurality of users, the stored summarized user activity data for the subset of defined time periods during which the user meets the threshold time spent accessing the messaging application to determine whether the stored summarized user activity data comprises a pattern of activity for accessing the messaging application that is similar to the consistent pattern of activity of the new cluster;
adding, to the new cluster, each user with corresponding stored summarized user activity data comprising a similar pattern as the consistent pattern of activity of the new cluster and that was consistently active for at least a minimum number of weeks in a predetermined number of weeks covering the subset of defined time periods of the new cluster;
continuing to generate and store new clusters until no more significant patterns are detected or a maximum number of runs has occurred;
receiving a request for stored clusters from a third-party computing system that lacks data and/or processing capabilities to generate clusters based on the user activity data; and
providing data associated with stored clusters to the requesting third-party computing system.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein determining when each user of the plurality of users meets a threshold time spent accessing the messaging application during a subset of defined time periods comprises:
analyzing the user activity data associated with the user to determine user activity using the messaging computing system for each of the time periods in the plurality of time periods;
incrementing a count for each of the defined time periods that comprises user activity; and
determining when the user meets the threshold time spent accessing the messaging application by comparing the count for each time period to the threshold.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the defined time periods are defined by grouping similar day of a week and time of the day together based on time periods that have similar user activity.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
determining whether a number of users added to the new cluster meet a threshold number of users for a cluster; and
removing the users added to the new cluster from the new cluster based on determining that the number of users added to the new cluster does not meet the threshold number of users for a cluster.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, further comprising:
determining that a number of users added to the new cluster meets a threshold number of users for a cluster;
extracting a second random user from the plurality of users;
determining the second random user has a second consistent pattern; and
generating a next new cluster associated with the second consistent pattern.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the data associated with generated clusters comprises at least one of: a primary time period when a user in the cluster is active, a primary preference for a day or days of the week, demographics, or amount of time using the messaging computing system per day.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the summarized user activity data comprises a list of defined time periods during which each user is consistently active.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the defined time periods are based on generating a series of time correlation matrices to determine time intervals that can be grouped together into time periods.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising:
grouping together, into one time period, any two time intervals that are correlated significantly higher than an average correlation among all time intervals.

### Claim 10

A computing system comprising:
a memory that stores instructions; and
one or more hardware processors configured by the instructions to perform operations comprising:
determining, based on user activity data generated by a plurality of computing devices associated with a plurality of users in a messaging computing system, when each user of the plurality of users meets a threshold time spent accessing a messaging application related to the messaging computing system during a subset of defined time periods;
summarizing only user activity data for the subset of defined time periods when each user of the plurality of users meets the threshold time spent accessing the messaging application related to the messaging computing system;
storing the summarized user activity data for each user for the subset of defined time periods during which each user meets the threshold time spent accessing the messaging application;
extracting a random user from the plurality of users;
determining the subset of defined time periods during which the random user meets the threshold time spent accessing the messaging application;
generating a new cluster corresponding to a consistent pattern of activity comprising the subset of defined time periods during which the random user meets the threshold time spent accessing the messaging application and adding the random user to the new cluster;
analyzing, for each user of the other users in the plurality of users, the stored summarized user activity data for the subset of defined time periods during which the user meets the threshold time spent accessing the messaging application to determine whether the stored summarized user activity data comprises a pattern of activity for accessing the messaging application that is similar to the consistent pattern of activity of the new cluster;
adding, to the new cluster, each user with corresponding stored summarized user activity data comprising a similar pattern as the consistent pattern of activity of the new cluster and that was consistently active for at least a minimum number of weeks in a predetermined number of weeks covering the subset of defined time periods of the new cluster;
continuing to generate and store new clusters until no more significant patterns are detected or a maximum number of runs has occurred;
receiving a request for stored clusters from a third-party computing system that lacks data and/or processing capabilities to generate clusters based on the user activity data; and
providing data associated with stored clusters to the requesting third-party computing system.

### Claim 11 (depends on 10)

The computing system of claim 10, wherein determining when each user of the plurality of users meets a threshold time spent accessing the messaging application during a subset of defined time periods comprises:
analyzing the user activity data associated with the user to determine user activity using the messaging computing system for each of the time periods in the plurality of time periods;
incrementing a count for each of the defined time periods that comprises user activity; and
determining when the user meets the threshold time spent accessing the messaging application by comparing the count for each time period to the threshold.

### Claim 12 (depends on 10)

The computing system of claim 10, wherein the defined time periods are defined by grouping similar day of a week and time of the day together based on time periods that have similar user activity.

### Claim 13 (depends on 10)

The computing system of claim 10, the operations further comprising:
determining whether a number of users added to the new cluster meet a threshold number of users for a cluster; and
removing the users added to the new cluster from the new cluster based on determining that the number of users added to the new cluster does not meet the threshold number of users for a cluster.

### Claim 14 (depends on 10)

The computing system of claim 10, the operations further comprising:
determining that a number of users added to the new cluster meets a threshold number of users for a cluster;
extracting a second random user from the plurality of users;
determining the second random user has a second consistent pattern; and
generating a next new cluster associated with the second consistent pattern.

### Claim 15 (depends on 10)

The computing system of claim 10, wherein the data associated with generated clusters comprises at least one of: a primary time period when a user in the cluster is active, a primary preference for a day or days of the week, demographics, or amount of time using the messaging computing system per day.

### Claim 16 (depends on 10)

The computing system of claim 10, wherein the summarized user activity data comprises a list of defined time periods during which each user is consistently active.

### Claim 17

A non-transitory computer-readable medium comprising instructions stored thereon that are executable by at least one processor to cause a computing device to perform operations comprising:
determining, based on user activity data generated by a plurality of computing devices associated with a plurality of users in a messaging computing system, when each user of the plurality of users meets a threshold time spent accessing a messaging application related to the messaging computing system during a subset of defined time periods;
summarizing only user activity data for the subset of defined time periods when each user of the plurality of users meets the threshold time spent accessing the messaging application related to the messaging computing system;
storing the summarized user activity data for each user for the subset of defined time periods during which each user meets the threshold time spent accessing the messaging application;
extracting a random user from the plurality of users;
determining the subset of defined time periods during which the random user meets the threshold time spent accessing the messaging application;
generating a new cluster corresponding to a consistent pattern of activity comprising the subset of defined time periods during which the random user meets the threshold time spent accessing the messaging application and adding the random user to the new cluster;
analyzing, for each user of the other users in the plurality of users, the stored summarized user activity data for the subset of defined time periods during which the user meets the threshold time spent accessing the messaging application to determine whether the stored summarized user activity data comprises a pattern of activity for accessing the messaging application that is similar to the consistent pattern of activity of the new cluster;
adding, to the new cluster, each user with corresponding stored summarized user activity data comprising a similar pattern as the consistent pattern of activity of the new cluster and that was consistently active for at least a minimum number of weeks in a predetermined number of weeks covering the subset of defined time periods of the new cluster;
continuing to generate and store new clusters until no more significant patterns are detected or a maximum number of runs has occurred;
receiving a request for stored clusters from a third-party computing system that lacks data and/or processing capabilities to generate clusters based on the user activity data; and
providing data associated with stored clusters to the requesting third-party computing system.

### Claim 18 (depends on 1)

The computer-implemented method of claim 1, wherein before extracting the random user from the plurality of users, the method comprises:
extracting a second random user from the plurality of users; and
based on determining that user activity data associated with the second random user does not meet a threshold time spent accessing the messaging application, removing activity data associated with the second random user from the user activity data.
