IP Library Granted Patent US 10,769,661
Granted Patent B1
US 10,769,661 · App. 14/214,489 · Granted Sep 8, 2020

Real time messaging platform

Inventors: Parag Agrawal (San Francisco, CA); Mike Jahr (San Francisco, CA); Yue Lu (San Francisco, CA); Feng Zhuge (San Francisco, CA); Qicheng Ma (San Francisco, CA); Utkarsh Srivastava (San Francisco, CA)
Assignee: Twitter, Inc.
G06Q30/0255
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,769,661
App. No.
14/214,489
Granted
Sep 8, 2020
Kind
B1
Abstract

A real-time messaging platform allows advertiser accounts to pay to insert candidate messages into the message streams requested by account holders. To accommodate multiple advertisers, the messaging platform controls an auction process that determines which candidate messages are selected for inclusion in a requested account holder's message stream. Selection is based on a bid for the candidate message, the message stream that is requested, and a variety of other factors that vary depending upon the implementation. The process for selection of candidate messages generally includes the following steps, though any given step may be omitted or combined into another step in a different implementation: targeting, filtering, prediction, ranking, and selection.

Claims (81)

1. A computer-implemented method, comprising:

receiving, from a client device accessing a messaging platform using a first account of a plurality of accounts, a request for a message stream;

selecting one or more candidate messages, wherein each candidate message is associated with one or more respective message features, wherein each candidate message, when output in the message stream, is configured to receive any of a plurality of engagements;

for each candidate message in the one or more candidate messages:

determining content of the respective candidate message,

determining, based on the content of the respective candidate message, one or more message features associated with the respective candidate message,

selecting, for the first account and based on the one or more message features associated with the respective candidate message, one or more account features associated with the first account,

deriving, based on the selected one or more account features of the first account and the one or more message features, a features vector for the respective candidate message,

for each engagement category of a plurality of engagement categories, wherein the plurality of engagement categories includes a positive engagement category, a negative engagement category, a monetizable engagement category, a performance engagement category, and a follow engagement category, wherein each engagement of the plurality of engagements is classified into one of the plurality of engagement categories, wherein each engagement category includes at least one of the plurality of engagements, and wherein none of the plurality of engagements are classified into two or more of the plurality of engagement categories, and wherein the follow engagement category includes a follow engagement of the plurality of engagements, the follow engagement comprising a creation of a unidirectional connection between the first account and a second account posting the respective candidate message where future message streams for the first account include messages posted by the second account:

calculating, using logistic regression and for each of the one or more account features of the first account and for each of the one or more message features of the candidate message, a respective weight,

deriving, based on each weight for the one or more account features and each weight for the one or more message features, a respective weights vector for the respective engagement category for the respective candidate message,

calculating, based on the features vector for the respective candidate message, the respective weights vector for the respective engagement category for the respective candidate message, and a respective logistic regression model specific to the respective engagement category, a value representing a likelihood of the respective candidate message receiving an engagement of the respective engagement category by a user of the first account, and

calculating, based on the respective value for the respective engagement category, a weighted engagement value for the respective engagement category, and

determining, based on the weighted engagement values of the engagement categories, a rank value for the respective candidate message;

selecting, based on the determined rank values of candidate messages of the one or more candidate messages, at least one candidate message from the one or more candidate messages for inclusion in the message stream of the first account;

placing the at least one candidate message in the message stream of the first account; and

sending the message stream with the at least one candidate message, for display, to the client device accessing the messaging platform using the first account.

2. The computer-implemented method of claim 1 , wherein calculating the value representing the likelihood of receiving the engagement of the respective engagement category comprises:

calculating the value based on a logistic function applied to an inner-product between the features vector and the weights vector.

3. The computer-implemented method of claim 1 , wherein calculating the value representing the likelihood of receiving the engagement of the respective engagement category comprises:

determining cross weights for cross features between the first account and the respective candidate message based on engagement data representing past engagements by the first account; and

calculating the value representing the likelihood of receiving the engagement of the respective engagement category based in part on the cross weights.

4. The computer-implemented method of claim 3 , wherein at least one of the cross features is determined based on a correlation between inferred interests of the first account and topics of the respective candidate message.

5. The computer-implemented method of claim 3 , wherein at least one of the cross features is determined based on a number of interactions between the first account and the respective candidate message, the interactions comprising at least one of an impression, an engagement, or a connection between the first account and an account that authored the respective candidate message.

6. The computer-implemented method of claim 3 , wherein at least one of the cross features is determined based on an inferred location of the first account and at least one of a message location associated with the respective candidate message, an account location associated with an advertiser account that authored the respective candidate message, or a campaign location associated with an ad campaign comprising the respective candidate message.

7. The computer-implemented method of claim 3 , wherein at least one of the cross features is determined based a correlation between an account feature of the one or more account features and a message feature of the one or more message features, the message feature comprising a targeting characteristic specified by an advertiser account that authored the respective candidate message, the correlation being based on at least one of a demographic characteristic of the first account, a device type used to access the messaging platform, or a software type used to access the messaging platform.

8. The computer-implemented method of claim 1 , wherein the respective weights vector for the respective engagement category for the respective candidate message is derived based on past engagements performed by subscribing accounts subscribed to receive messages from the first account.

9. The computer-implemented method of claim 1 , wherein the respective weights vetor for the respective engagement category for the respective candidate message is derived based on past engagements performed by the first account.

10. The computer-implemented method of claim 1 , wherein the one or more account features includes features determined based on connections between the first account and other accounts subscribed to receive messages authored by the first account, and further based on connections between the first account and other accounts that the first account is subscribed to receive messages from.

11. The computer-implemented method of claim 1 , wherein the one or more account features are selected based on engagements between the first account and other messages and based on message features of those other messages.

12. A non-transitory computer-readable storage medium comprising instructions executable by at least one processor to perform operations comprising:

receiving, from a client device accessing a messaging platform using a first account of a plurality of accounts, a request for a message stream;

selecting one or more candidate messages, wherein each candidate message is associated with one or more respective message features, wherein each candidate message, when output in the message stream, is configured to receive any of a plurality of engagements;

for each candidate message in the one or more candidate messages:

determining content of the respective candidate message,

determining, based on the content of the respective candidate message, one or more message features associated with the respective candidate message,

selecting, for the first account and based on the one or more message features associated with the respective candidate message, one or more account features associated with the first account,

deriving, based on the selected one or more account features of the first account and the one or more message features, a features vector for the respective candidate message,

for each engagement category of a plurality of engagement categories, wherein the plurality of engagement categories includes a positive engagement category, a negative engagement category, a monetizable engagement category, a performance engagement category, and a follow engagement category, wherein each engagement of the plurality of engagements is classified into one of the plurality of engagement categories, wherein each engagement category includes at least one of the plurality of engagements, and wherein none of the plurality of engagements are classified into two or more of the plurality of engagement categories, and wherein the follow engagement category includes a follow engagement of the plurality of engagements, the follow engagement comprising a creation of a unidirectional connection between the first account and a second account posting the respective candidate message where future message streams for the first account include messages posted by the second account:

calculating, using logistic regression and for each of the one or more account features of the first account and for each of the one or more message features of the candidate message, a respective weight,

deriving, based on each weight for the one or more account features and each weight for the one or more message features, a respective weights vector for the respective engagement category for the respective candidate message,

calculating, based on (i) the features vector for the respective candidate message, (ii) the respective weights vector for the respective engagement category respective candidate message specific to, and (iii) a respective logistic regression model specific to the respective engagement category, a value representing a likelihood of the respective candidate message receiving an engagement of the respective engagement category by a user of the first account, and

calculating, based on the respective value for the respective engagement category, a weighted engagement value for the respective engagement category, and

determining, based on the weighted engagement values of the engagment categories, a rank value for the respective candidate message;

selecting, based on the determined rank values of the candidate messages of the one or more candidate messages, at least one candidate message from the one or more candidate messages for inclusion in the message stream of the first account;

placing the at least one candidate message in the message stream of the first account; and

sending the message stream with the at least one candidate message, for display, to the client device accessing the messaging platform using the first account.

13. A system comprising:

a computer processor; and

a memory configured to store instructions that are executable by the computer processor to:

receive, from a client device accessing a messaging platform using a first account of a plurality of accounts, a request for a message stream;

select one or more candidate messages, wherein each candidate message is associated with one or more respective message features, wherein each candidate message, when output in the message stream, is configured to receive any of a plurality of engagements;

for each candidate message in the one or more candidate messages:

determine content of the respective candidate message,

determine, based on the content of the respective candidate message, one or more message features associated with the respective candidate message,

select, for the first account and based on the one or more message features associated with the respective candidate message, one or more account features associated with the first account,

derive, based on the selected one or more account features of the first account and the one or more message features, a features vector for the respective candidate message,

for each engagement category of a plurality of engagement categories, wherein the plurality of engagement categories includes a positive engagement category, a negative engagement category, a monetizable engagement category, a performance engagement category, and a follow engagement category, wherein each engagement of the plurality of engagements is classified into one of the plurality of engagement categories, wherein each engagement category includes at least one of the plurality of engagements, and wherein none of the plurality of engagements are classified into two or more of the plurality of engagement categories, and wherein the follow engagement category includes a follow engagement of the plurality of engagements, the follow engagement comprising a creation of a unidirectional connection between the first account and a second account posting the respective candidate message where future message streams for the first account include messages posted by the second account:

calculate, using logistic regression and for each of the one or more account features of the first account and for each of the one or more message features of the respective candidate message, a respective weight,

derive, based on each weight for the one or more account features and each weight for the one or more message features, a respective weights vector for the respective engagement category for the respective candidate message,

calculate, based on (i) the features vector for the respective candidate message, (ii) the respective weights vector for the respective engagement category for the respective message , and (iii) a respective logistic regression model specific to the respective engagement category, a value representing a likelihood of the respective candidate message receiving an engagement of the respective engagement category by a user of the first account, and

calculate, based on the respective value for the respective engagement category, a weighted engagement value for the respective engagement category, and

determine, based on the weighted engagement values of the engagement categories, a rank value for the respective candidate message;

select, based on the determined rank values of candidate messages of the one or more candidate messages, at least one candidate message from the one or more candidate messages for inclusion in the message stream of the first account;

place the at least one candidate message in the message stream of the first account; and

send the message stream with the at least one candidate message, for display, to the client device accessing the messaging platform using the first account.

14. The system of claim 13 , wherein the instructions executable by the computer processor to calculate the value representing the likelihood of receiving the engagement of the respective engagement category comprise instructions that are executable by the computer processor to:

calculate the value based on a logistic function applied to an inner-product between the features vector and the weights vector.

15. The system of claim 13 , wherein the instructions executable by the computer processor to calculate the value representing the likelihood of receiving the engagement of the respective engagement category comprise instructions that are executable by the computer processor to:

determine cross weights for cross features between the first account and the respective candidate message based on engagement data representing past engagements of the first account; and

calculate the value representing the likelihood of receiving the engagement of the respective engagement category based in part on the cross weights.

16. The system of claim 15 , wherein at least one of the cross features is determined based on a correlation between inferred interests of the first account and topics of the respective candidate message.

17. The method of claim 1 , wherein determining the rank value for the respective candidate message comprises:

determining, for the respective candidate message, a progressive impression cost comprising a log of a total number of engagements received by the respective candidate message from accounts of the messaging platform; and

determining the rank value based on the weighted engagement values of the plurality of engagement categories, and the progressive impression cost.

18. The non-transitory computer-readable storage medium of claim 12 , wherein the instructions executable by the computer processor to calculate the value representing the likelihood of receiving the engagement of the respective engagement category comprise instructions that are executable by the computer processor to:

calculate the value based on a logistic function applied to an inner-product between the features vector and the weights vector.

19. The non-transitory computer-readable storage medium of claim 12 , wherein the instructions executable by the computer processor to calculate the value representing the likelihood of receiving the engagement of the respective engagement category comprise instructions that are executable by the computer processor to:

determine cross weights for cross features between the first account and the respective candidate message based on engagement data representing past engagements of the first account; and

calculate the value representing the likelihood of receiving the engagement of the respective engagement category based in part on the cross weights.

20. The non-transitory computer-readable storage medium of claim 19 , wherein at least one of the cross features is determined based on a correlation between inferred interests of the first account and topics of the respective candidate message.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2014
From: AGRAWAL, PARAG; JAHR, MIKE; LU, YUE; ZHUGE, FENG; MA, QICHENG; SRIVASTAVA, UTKARSH
To: TWITTER, INC.,
Reel/Frame 033470/0230 →
Continuity (1)
Provisional Application 61800546 · Mar 15, 2013