IP Library Granted Patent US 12,450,227
Granted Patent B2
US 12,450,227 · App. 18/482,774 · Granted Oct 21, 2025

Real time system for ingestion, aggregation, and identity association of data from user actions performed on websites or applications

Inventors: Cynthia Rogers (Palo Alto, CA); William Pentney (San Francisco, CA); Eric Pollmann (Los Altos, CA); Muhammad Bilal Mahmood (San Francisco, CA)
Assignee: Amplitude, Inc.
G06F16/2379G06F16/254
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 12,450,227
App. No.
18/482,774
Granted
Oct 21, 2025
Kind
B2
Abstract

Systems and methods for data ingestion in real time are described herein. In an embodiment, a server computer receives a message comprising one or more client events from a storage device which publishes the message in response to storing the one or more client events. The server computer stores the one or more client events as raw event strings which are then parsed into parsed event strings. Identity resolution methods are performed on the parsed event strings. Feature groups are then identified in the parsed event strings and used to generate aggregation keys which are used to aggregate the feature groups prior to storing aggregated data in one or more aggregation tables.

Claims (80)

1. A computer-implemented method comprising:

storing a plurality of event records corresponding to a respective plurality of user interactions with a graphical user interface for a website or an application in a persistent storage, the storing comprising:

receiving the plurality of event records;

grouping the plurality of event records and compressing the plurality of event records for storage in a compressed format as a compressed set of event records, wherein the compressed set of event records is stored in association with a file path; and

writing the file path of the compressed set of event records to a publish-subscribe queue;

ingesting, from the publish-subscribe queue, a stream of data comprising the compressed set of event records, wherein the compressed set of event records is accessed using the file path as retrieved from a publish/subscribe message, wherein the ingesting decompresses the compressed set of event records back into the plurality of event records and is performed in parallel to the storing;

determining that a first record from the plurality of event records includes a first anonymous identifier and a first known identifier;

adding a mapping between the first anonymous identifier and the first known identifier to an identifier resolution database;

determining that a second record from the plurality of event records includes a second anonymous identifier and no known identifier;

using the identifier resolution database to identify a second known identifier that is mapped to the second anonymous identifier;

updating the second record to include the second known identifier; and

including the first record and the updated second record in a training matrix for training a machine learning model to compute causal inferences associated with the plurality of user interactions.

2. The computer-implemented method of claim 1 , further comprising:

parsing the plurality of event records based on identifying one or more feature groups into a plurality of parsed event records;

identifying an event aggregation axis by breaking out a particular feature group from the one or more feature groups;

generating a composite key based on the event aggregation axis and the particular feature group;

aggregating the plurality of event records based on the composite key and a selected aggregation type into aggregated event records; and

including the aggregated event records in the training matrix,

wherein the one or more feature groups comprise one or more of a categorical type of feature group, a count type of feature group, or a static type of feature group.

3. The computer-implemented method of claim 2 , wherein the categorical type of feature group is a feature group with unique values, the count type of feature group is a feature group with only one type of value, and the static type of feature group is a categorical type of feature group with greater than a threshold number of unique values.

4. The computer-implemented method of claim 2 , wherein the composite key comprises one or more of a user identifier, a feature group name identifier, an entity identifier, or an hour identifier.

5. The computer-implemented method of claim 2 , wherein updating the second record to include the second known identifier allows user interactions that occur prior to a user logging in to the website or the application to be attributed to specific users when training the machine learning model.

6. The computer-implemented method of claim 2 , wherein the selected aggregation type is one of a count type, a categorical type, or a static type.

7. The computer-implemented method of claim 2 , wherein aggregating the plurality of event records based on the composite key and the selected aggregation type comprises:

when the selected aggregation type is a category type, generating a record comprising a first value, a last value, and all unique values of a categorical feature group in the plurality of parsed event records.

8. The computer-implemented method of claim 2 , wherein aggregating the plurality of event records based on the composite key and the selected aggregation type comprises:

when the selected aggregation type is a static type, generating a record comprising a last value of a static feature group in the plurality of parsed event records.

9. The computer-implemented method of claim 2 , wherein aggregating the plurality of event records based on the composite key and the selected aggregation type comprises:

in response to the selected aggregation type being a count type, generating a record comprising a count of a number of instances of a count feature group in the plurality of parsed event records.

10. The computer-implemented method of claim 2 , further comprising:

detecting an aggregation trigger event; and

aggregating the plurality of event records in response to the detection of the aggregation trigger event.

11. The method of claim 1 , further comprising:

determining that a third record from the plurality of event records includes a third anonymous identifier and no known identifier;

determining that the third anonymous identifier is not included in the identifier resolution database;

waiting until the third anonymous identifier has been added to the identifier resolution database;

using the identifier resolution database to identify a third known identifier that is mapped to the third anonymous identifier;

updating the third record to include the third known identifier, and

adding the third record to the training matrix.

12. A system, comprising:

one or more processors; and

a non-transitory storage medium coupled to the one or more processors and storing instructions which, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

storing a plurality of event records corresponding to a respective plurality of user interactions with a graphical user interface for a website or an application in a persistent storage, the storing comprising:

receiving the plurality of event records;

grouping the plurality of event records and compressing the plurality of event records for storage in a compressed format as a compressed set of event records, wherein the compressed set of event records is stored in association with a file path; and

writing the file path of the compressed set of event records to a publish-subscribe queue;

ingesting, from the publish-subscribe queue, a stream of data comprising the compressed set of event records, wherein the compressed set of event records is accessed using the file path as retrieved from a publish/subscribe message, wherein the ingesting decompresses the compressed set of event records back into the plurality of event records and is performed in parallel to the storing;

determining that a first record from the plurality of event records includes a first anonymous identifier and a first known identifier;

adding a mapping between the first anonymous identifier and the first known identifier to an identifier resolution database;

determining that a second record from the plurality of event records includes a second anonymous identifier and no known identifier;

using the identifier resolution database to identify a second known identifier that is mapped to the second anonymous identifier;

updating the second record to include the second known identifier; and

including the first record and the updated second record in a training matrix for training a machine learning model to compute causal inferences associated with the plurality of user interactions.

13. The system of claim 12 , wherein the instructions, when executed by the one or more processors, further cause performance of operations comprising:

parsing the plurality of event records based on identifying one or more feature groups into a plurality of parsed event records;

identifying an event aggregation axis by breaking out a particular feature group from the one or more feature groups;

generating a composite key based on the event aggregation axis and the particular feature group;

aggregating the plurality of event records based on the composite key and a selected aggregation type into aggregated event records; and

including the aggregated event records in the training matrix,

wherein the one or more feature groups comprise one or more of a categorical type of feature group, a count type of feature group, or a static type of feature group.

14. The system of claim 13 , wherein the categorical type of feature group is a feature group with unique values, the count type of feature group is a feature group with only one type of value, and the static type of feature group is a categorical type of feature group with greater than a threshold number of unique values.

15. The system of claim 13 , wherein the composite key comprises one or more of a user identifier, a feature group name identifier, an entity identifier, or an hour identifier.

16. The system of claim 13 , wherein updating the second record to include the second known identifier allows user interactions that occur prior to a user logging in to be attributed to specific users for use when training the machine learning model.

17. The system of claim 13 , wherein the selected aggregation type is one of a count type, a categorical type, or a static type.

18. The system of claim 13 , wherein the instructions, when executed by the one or more processors, cause performance of operations comprising:

for a categorical feature group, generating a record comprising a first value, a last value, and all unique values of the categorical feature group in the plurality of parsed event records.

19. The system of claim 13 , wherein the instructions, when executed by the one or more processors, cause performance of operations comprising:

for a static feature group, generating a record comprising a last value of the static feature group in the plurality of parsed event records.

20. The system of claim 13 , wherein the instructions, when executed by the one or more processors, cause performance of operations comprising:

for a count feature group, generating a record comprising a count of a number of instances of the count feature group in the plurality of parsed event records.

21. The system of claim 13 , wherein the instructions, when executed by the one or more processors, further cause performance of operations comprising:

detecting an aggregation trigger event; and

aggregating the plurality of event records in response to the detection of the aggregation trigger event.

22. The system of claim 12 , the operations further comprising:

determining that a third record from the plurality of event records includes a third anonymous identifier and no known identifier;

determining that the third anonymous identifier is not included in the identifier resolution database;

waiting until the third anonymous identifier has been added to the identifier resolution database;

using the identifier resolution database to identify a third known identifier that is mapped to the third anonymous identifier;

updating the third record to include the third known identifier; and

adding the third record to the training matrix.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2026
From: ROGERS, CYNTHIA; PENTNEY, WILLIAM; POLLMANN, ERIC; MAHMOOD, MUHAMMAD BILAL
To: CLEARBRAIN, INC.
Reel/Frame 075124/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2026
From: CLEARBRAIN, INC.
To: AMPLITUDE, INC.
Reel/Frame 075124/0662 →
Continuity (2)
Continuation 16740302 · Jan 10, 2020
Related Publication 20240104088A1 · Mar 28, 2024
References Cited (72)
US 7809601B2 · Shaya et al. · 2010 [cited by applicant]
US 8775338B2 · Lee · 2014 [cited by applicant]
US 8779266B2 · Basso et al. · 2014 [cited by applicant]
US 8782162B1 · Deshpande et al. · 2014 [cited by applicant]
US 8812960B1 · Sun et al. · 2014 [cited by applicant]
US 9203905B1 · Hong · 2015 [cited by examiner]
US 10699203B1 · Ozcaglar et al. · 2020 [cited by applicant]
US 11115421B2 · Nevatia et al. · 2021 [cited by applicant]
US 20030182281A1 · Wittkowski · 2003 [cited by applicant]
US 20050256844A1 · Cristol · 2005 [cited by applicant]
US 20050278731A1 · Cameron · 2005 [cited by examiner]
US 20060089812A1 · Jacquez · 2006 [cited by applicant]
US 20060122807A1 · Wittkowski · 2006 [cited by applicant]
US 20070156809A1 · Dickinson et al. · 2007 [cited by applicant]
US 20070192170A1 · Cristol · 2007 [cited by applicant]
US 20070208545A1 · Wittkowski · 2007 [cited by applicant]
US 20080183454A1 · Barabasi et al. · 2008 [cited by applicant]
US 20080234976A1 · Wittkowski · 2008 [cited by applicant]
US 20090254399A1 · Cristol · 2009 [cited by applicant]
US 20100161709A1 · Fourman · 2010 [cited by applicant]
US 20100179930A1 · Teller et al. · 2010 [cited by applicant]
US 20100274661A1 · Aaltonen et al. · 2010 [cited by applicant]
US 20100312884A1 · Nandy · 2010 [cited by examiner]
US 20110137950A1 · Deng et al. · 2011 [cited by applicant]
US 20110179020A1 · Ozzie et al. · 2011 [cited by applicant]
US 20110225142A1 · McDonald · 2011 [cited by examiner]
US 20120150641A1 · Dobbs · 2012 [cited by examiner]
US 20140337474A1 · Khuti et al. · 2014 [cited by applicant]
US 20140358825A1 · Phillipps et al. · 2014 [cited by applicant]
US 20140379811A1 · Chan et al. · 2014 [cited by applicant]
US 20150332308A1 · Liu · 2015 [cited by applicant]
US 20160027037A1 · Cai · 2016 [cited by examiner]
US 20160155143A1 · Hsiao et al. · 2016 [cited by applicant]
US 20160162977A1 · Conchola · 2016 [cited by examiner]
US 20160173540A1 · Linden et al. · 2016 [cited by applicant]
US 20160173617A1 · Allinson · 2016 [cited by applicant]
US 20160189202A1 · Wang et al. · 2016 [cited by applicant]
US 20160321308A1 · Brinnand · 2016 [cited by applicant]
US 20170076299A1 · Modarresi · 2017 [cited by applicant]
US 20170116525A1 · Pinel et al. · 2017 [cited by applicant]
US 20170193382A1 · Villa · 2017 [cited by examiner]
US 20170206552A1 · Rajkumar et al. · 2017 [cited by applicant]
US 20170223036A1 · Muddu et al. · 2017 [cited by applicant]
US 20170235848A1 · Van Dusen et al. · 2017 [cited by applicant]
US 20180210808A1 · Shanmugam et al. · 2018 [cited by applicant]
US 20180225709A1 · Ferber et al. · 2018 [cited by applicant]
US 20190130133A1 · Al-Kabra · 2019 [cited by examiner]
US 20190163829A1 · Puri et al. · 2019 [cited by applicant]
US 20190244348A1 · Buckler et al. · 2019 [cited by applicant]
US 20200251213A1 · Tran et al. · 2020 [cited by applicant]
US 20200412726A1 · Nevatia et al. · 2020 [cited by applicant]
US 20210035010A1 · Kramer et al. · 2021 [cited by applicant]
US 20210248129A1 · Paulsen · 2021 [cited by examiner]
US 20210271531A1 · Paulsen · 2021 [cited by examiner]
US 20230376467A1 · Jenkins · 2023 [cited by examiner]
CN 110489254A · 2019 [cited by examiner]
WO WO2021050740A1 · 2021 [cited by applicant]
Book entitled “Exploring Splunk”, by Carasso, Copyright 2012). (Year: 2012). [cited by examiner]
Article entitled “How to Track Unique Users with Behavioral Analytics Tools”, by Aerendir, dated Nov. 17, 2018 (Year: 2018). [cited by examiner]
Machine Translation of CN 110489254A, by Liu et al., Published on Nov. 22, 2019 (Year: 2019). [cited by examiner]
Article entitled “Tracking Unique Users”, by Amplitude, dated Aug. 1, 2019 (Year: 2019). [cited by examiner]
Article entitled “Mixpanel System Architecture”, by Jayaram, dated Jun. 2018 (Year: 2018). [cited by examiner]
International Search Report and Written Opinion for International Patent Application No. PCT/US2020/041996, dated Sep. 29, 2020 (7 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2022/021993, dated Mar. 25, 2022 (10 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2022/022858, dated Sep. 13, 2022 (15 pages). [cited by applicant]
Zhang, Shuai et al. “Deep Leaming based Recommender System: A Survey and New Perspectives,” ACM Comput. Surv. 1, 1, Article 1, Jul. 2018 (35 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2020/066456, dated Mar. 18, 2021 (16 pages). [cited by applicant]
Article entitled “How to Track Unique Users with Behavioural Analytics Tools”, by Aerendir, dated Nov. 17, 2018 (Year: 2018). [cited by applicant]
Article entitled “Scaling Analytics at Amplitude”, by Wong, dated Aug. 25, 2015 (Year: 2015). [cited by applicant]
Article entitled “Nova: The Architecture for Understanding User Behavior”, by Wong, dated May 25, 2016 (Year: 2016). [cited by applicant]
Article entitled “Mixpanel System Architecture”, by Jayaram et al., dated Jun. 2018 (Year: 2018). [cited by applicant]
Anonymous, “Composite Key,” Wikipedia, retrieved from https://en.wikipedia.org on Dec. 10, 2023, 2 pages. [cited by applicant]