IP Library Granted Patent US 10,650,408
Granted Patent B1
US 10,650,408 · App. 14/214,427 · Granted May 12, 2020

Budget smoothing in a messaging platform

Inventors: Reid Andersen (San Francisco, CA); Parag Agrawal (San Francisco, CA); Ashish Goel (Palo Alto, CA); Utkarsh Srivastava (Menlo Park, CA)
Assignee: Twitter, Inc.
G06Q30/0249G06Q30/0275
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,650,408
App. No.
14/214,427
Granted
May 12, 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 (97)

1. A method comprising:

identifying a set of one or more candidate messages, each candidate message in the set being associated with a bid price and one of a plurality of ad campaigns;

constructing an engagement time distribution by at least applying a first spend smoothing distribution to a first tunable parameter to generate a first product, applying a second spend smoothing distribution to a second tunable parameter to generate a second product, and combining the first product and the second product;

receiving, from a client device, a request for a message stream of an account holder of a social media platform, the social media platform publishing message streams of account holders;

for each of the plurality of ad campaigns:

accessing the engagement time distribution,

calculating a set of two or more parameters comprising a predicted click-through rate and one or more of an impression callback rate and a cost per engagement, wherein the predicted click-through rate is calculated based on a features vector and a weights vector, wherein the features vector comprises values of one or more of a message feature or an account feature, and wherein the weights vector comprises weight values for each of the features in the features vector,

calculating a current outstanding spend based on a time stamp of the request, the set of two or more parameters, the engagement time distribution, and the one or more candidate messages in the set that are associated with the respective ad campaign that have been included in message streams of one or more account holders of the social media platform and that have not received engagements,

calculating a total outstanding spend for the respective ad campaign by adding the current outstanding spend of the respective ad campaign to a current spend of the respective ad campaign, and

deriving a throttle factor based on the time stamp and a current budget spend rate;

determining, for only each of the candidate messages in the set associated with a respective ad campaign having the total outstanding spend less than a budget for the respective ad campaign, a rank value based on the bid price of the respective candidate message, the throttle factor for the respective ad campaign, and a value representing a likelihood of engagement with the respective candidate message by the account holder;

selecting at least one of the candidate messages in the set for inclusion in the requested message stream of the account holder based on the respective rank values; and

sending the message stream to the client device for display.

2. The method of claim 1 , wherein the budget is based on a daily budget.

3. The method of claim 1 ,

wherein the rank value of one of the candidate messages is determined based on the respective throttle factor when greater than a threshold interval of time is remaining in a budget period associated with the budget, and

wherein the rank value of the one of the candidate messages is determined independent of the respective throttle factor when less than the threshold interval of time is remaining in the budget period.

4. The method of claim 1 ,

wherein the rank value of one of the candidate messages is determined based on the respective throttle factor where less than a threshold number of impressions of the one of the candidate messages has been included in published message streams, and

wherein the rank value of the one of the candidate messages is determined independent of the respective throttle factor where greater than the threshold number of impressions of the one of the candidate messages has been included in published message streams.

5. The method of claim 1 , wherein the throttle factor for one of the ad campaigns is determined based on an amount of time remaining in a budget period associated with the budget.

6. The method of claim 1 , wherein the throttle factor for one of the ad campaigns is determined based on a number of impressions of candidate messages of the ad campaign that have been included in published message streams.

7. The method of claim 1 , wherein the throttle factor for each ad campaign is determined based on previous engagements with candidate messages of the respective ad campaign.

8. The method of claim 1 , wherein the throttle factor is determined based on the current budget spend rate and an amount of time elapsed in a budget period associated with the budget.

9. The method of claim 1 , wherein identifying the set of candidate messages comprises comparing account features of the requested account holder with targeting criteria of an ad campaign.

10. The method of claim 1 , further comprising, for an ad campaign of the plurality of ad campaigns:

performing a smoothing operation on the ad campaign, the smoothing operation comprising multiplying a bid price for the ad campaign by the throttle factor.

11. The method of claim 1 , further comprising, for an ad campaign of the plurality of ad campaigns:

determining that a threshold amount of time has passed since a candidate message for the ad campaign has been included in a message stream of an account holder and that the candidate message has not received an engagement; and

updating a machine learning model to decrease the respective tunable parameter for one or more smoothing distributions for the respective ad campaign.

12. The method of claim 1 , further comprising, for an ad campaign of the plurality of ad campaigns:

receiving an indication that a candidate message for the respective ad campaign has received an engagement, wherein the candidate message previously had not received an engagement; and

updating a machine learning model to increase the respective tunable parameter for one or more smoothing distributions for the respective ad campaign.

13. A non-transitory computer-readable storage medium comprising instructions that, when executed by a system comprising one or more computer processors, cause the system to:

identify a set of one or more candidate messages, each candidate message in the set being associated with a bid price and one of a plurality of ad campaigns;

construct an engagement time distribution by at least applying a first spend smoothing distribution to a first tunable parameter to generate a first product, applying a second spend smoothing distribution to a second tunable parameter to generate a second product, and combining the first product and the second product;

receive, from a client device, a request for a message stream of an account holder of a social media platform, the social media platform publishing message streams of account holders;

for each of the plurality of ad campaigns:

access the engagement time distribution,

calculate a set of two or more parameters comprising a predicted click-through rate and one or more of an impression callback rate and a cost per engagement, wherein the predicted click-through rate is calculated based on a features vector and a weights vector, wherein the features vector comprises values of one or more of a message feature or an account feature, and wherein the weights vector comprises weight values for each of the features in the features vector,

calculate a current outstanding spend based on a time stamp of the request, the set of two or more parameters, the engagement time distribution, and the one or more candidate messages in the set that are associated with the respective ad campaign that have been included in message streams of one or more account holders of the social media platform and that have not received engagements,

calculate a total outstanding spend for the respective ad campaign by adding the current outstanding spend of the respective ad campaign to a current spend of the respective ad campaign, and

derive a throttle factor based on the time stamp and a current budget spend rate;

determine, for only each of the candidate messages in the set associated with a respective ad campaign having the total outstanding spend less than a budget for the respective ad campaign, a rank value based on the bid price of the respective candidate message, the throttle factor for the respective ad campaign, and a value representing a likelihood of engagement with the respective candidate message by the account holder;

select at least one of the candidate messages in the set for inclusion in the requested message stream of the account holder based on the respective rank values; and

send the message stream to the client device for display.

14. The non-transitory computer-readable storage medium of claim 13 ,

wherein the rank value of one of the candidate messages is determined based on the respective throttle factor when greater than a threshold interval of time is remaining in a budget period associated with the budget, and

wherein the rank value of the one of the candidate messages is determined independent of the respective throttle factor when less than the threshold interval of time is remaining in the budget period.

15. The non-transitory computer-readable storage medium of claim 13 ,

wherein the rank value of one of the candidate messages is determined based on the respective throttle factor where less than a threshold number of impressions of the one of the candidate messages has been included in published message streams, and

wherein the rank value of the one of the candidate messages is determined independent of the respective throttle factor where greater than the threshold number of impressions of the one of the candidate messages has been included in published message streams.

16. The non-transitory computer-readable storage medium of claim 13 , wherein the throttle factor for one of the ad campaigns is determined based on an amount of time remaining in a budget period associated with the budget.

17. The non-transitory computer-readable storage medium of claim 13 , wherein the throttle factor for one of the ad campaigns is determined based on a number of impressions of candidate messages of the ad campaign that have been included in published message streams.

18. The non-transitory computer-readable storage medium of claim 13 , wherein the throttle factor for each ad campaign is determined based on one or more of previous engagements with candidate messages of the respective ad campaign or the current budget spend rate and an amount of time elapsed in a budget period associated with the budget.

19. The non-transitory computer-readable storage medium of claim 13 , wherein identifying the set of candidate messages comprises comparing account features of the requested account holder with targeting criteria of an ad campaign.

20. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions, when executed by the system, further cause the system to, for an ad campaign of the plurality of ad campaigns:

perform a smoothing operation on the ad campaign, the smoothing operation comprising multiplying a bid price for the ad campaign by the throttle factor.

21. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions, when executed by the system, further cause the system to, for an ad campaign of the plurality of ad campaigns:

determine that a threshold amount of time has passed since a candidate message for the ad campaign has been included in a message stream of an account holder and that the candidate message has not received an engagement; and

update a machine learning model to decrease the respective tunable parameter for one or more smoothing distributions for the respective ad campaign.

22. The non-transitory computer-readable storage medium of claim 13 , wherein the instructions, when executed by the system, further cause the system to, for an ad campaign of the plurality of ad campaigns:

receive an indication that a candidate message for the respective ad campaign has received an engagement, wherein the candidate message previously had not received an engagement; and

update a machine learning model to increase the respective tunable parameter for one or more smoothing distributions for the respective ad campaign.

23. A system comprising:

a computing system comprising one or more computer processors; and

a memory, wherein the memory includes instructions that, when executed by the computing system, cause the computing system to:

identify a set of one or more candidate messages, each candidate message in the set being associated with a bid price and one of a plurality of ad campaigns;

construct an engagement time distribution by at least applying a first spend smoothing distribution to a first tunable parameter to generate a first product, applying a second spend smoothing distribution to a second tunable parameter to generate a second product, and combining the first product and the second product;

receive, from a client device, a request for a message stream of an account holder of a social media platform, the social media platform publishing message streams of account holders;

for each of the plurality of ad campaigns:

access the engagement time distribution,

calculate a set of two or more parameters comprising a predicted click-through rate and one or more of an impression callback rate and a cost per engagement, wherein the predicted click-through rate is calculated based on a features vector and a weights vector, wherein the features vector comprises values of one or more of a message feature or an account feature, and wherein the weights vector comprises weight values for each of the features in the features vector,

calculate a current outstanding spend based on a time stamp of the request, the set of two or more parameters, the engagement time distribution, and the one or more candidate messages in the set that are associated with the respective ad campaign that have been included in message streams of one or more account holders of the social media platform and that have not received engagements,

calculate a total outstanding spend for the respective ad campaign by adding the current outstanding spend of the respective ad campaign to a current spend of the respective ad campaign; and

derive a throttle factor based on the time stamp and a current budget spend rate;

determine, for only each of the candidate messages in the set associated with a respective ad campaign having the total outstanding spend less than a budget for the respective ad campaign, a rank value based on the bid price of the respective candidate message, the throttle factor for the respective ad campaign, and a value representing a likelihood of engagement with the respective candidate message by the account holder;

select at least one of the candidate messages in the set for inclusion in the requested message stream of the account holder based on the respective rank values; and

send the message stream to the client device for display.

24. The system of claim 23 ,

wherein the rank value of one of the candidate messages is determined based on the respective throttle factor when greater than a threshold interval of time is remaining in a budget period associated with the budget, and

wherein the rank value of the one of the candidate messages is determined independent of the respective throttle factor when less than the threshold interval of time is remaining in the budget period.

25. The system of claim 23 ,

wherein the rank value of one of the candidate messages is determined based on the respective throttle factor where less than a threshold number of impressions of the one of the candidate messages has been included in published message streams, and

wherein the rank value of the one of the candidate messages is determined independent of the respective throttle factor where greater than the threshold number of impressions of the one of the candidate messages has been included in published message streams.

26. The system of claim 23 , wherein the throttle factor for one of the ad campaigns is determined based on an amount of time remaining in a budget period associated with the budget.

27. The system of claim 23 , wherein the throttle factor for one of the ad campaigns is determined based on a number of impressions of candidate messages of the ad campaign that have been included in published message streams.

28. The system of claim 23 , wherein the throttle factor for each ad campaign is determined based on one or more of previous engagements with candidate messages of the respective ad campaign or the current budget spend rate and an amount of time elapsed in a budget period associated with the budget.

29. The system of claim 23 , wherein identifying the set of candidate messages comprises comparing account features of the requested account holder with targeting criteria of an ad campaign.

30. The system of claim 23 , wherein the instructions, when executed by the computing system, further cause the computing system to, for an ad campaign of the plurality of ad campaigns:

perform a smoothing operation on the ad campaign, the smoothing operation comprising multiplying a bid price for the ad campaign by the throttle factor.

31. The system of claim 23 , wherein the instructions, when executed by the computing system, further cause the computing system to, for an ad campaign of the plurality of ad campaigns:

determine that a threshold amount of time has passed since a candidate message for the ad campaign has been included in a message stream of an account holder and that the candidate message has not received an engagement; and

update a machine learning model to decrease the respective tunable parameter for one or more smoothing distributions for the respective ad campaign.

32. The system of claim 23 , wherein the instructions, when executed by the computing system, further cause the computing system to, for an ad campaign of the plurality of ad campaigns:

receive an indication that a candidate message for the respective ad campaign has received an engagement, wherein the candidate message previously had not received an engagement; and

update a machine learning model to increase the respective tunable parameter for one or more smoothing distributions for the respective ad campaign.

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 Sep 3, 2014
From: ANDERSEN, REID; AGRAWAL, PARAG; GOEL, ASHISH; SRIVASTAVA, UTKARSH
To: TWITTER, INC.
Reel/Frame 033661/0986 →
Continuity (2)
Provisional Application 61800546 · Mar 15, 2013
Provisional Application 61800729 · Mar 15, 2013
Cited By (19)
US 12,190,330 US 12,204,564 US 12,216,794 US 12,259,882 US 12,265,896 US 12,277,232 US 12,288,233 US 12,299,065 US 12,353,405 US 12,381,915 US 12,412,140 US 12,536,329 US 12,591,828 US 12,609,938 US 12,641,108 US 12,688,324 US 12,694,044 US 12,717,859 US 12,718,167