IP Library Granted Patent US 12,293,183
Granted Patent B2
US 12,293,183 · App. 17/662,759 · Granted May 6, 2025

Client-side enrichment and transformation via dynamic logic for analytics

Inventors: Osama Khan (Vancouver, CA); Brandon Sneed (Oregon City, OR); Mark Hazlett (North Vancouver, CA); Prateek Srivastava (Vancouver, CA); Chris Sperandio (San Francisco, CA); Ilya Volodarsky (San Francisco, CA); Tony Xiao (San Francisco, CA); Fathy Boundjadj (Villeneuve-sur-Lot, FR); Peter Richmond (Sunnyvale, CA)
Assignee: Twilio Inc.
G06F8/76G06F8/33G06F8/60G06F9/547G06F11/3612G06F11/3624G06F11/3644G06F11/366G06F21/6254
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,293,183
App. No.
17/662,759
Granted
May 6, 2025
Kind
B2
Abstract

Described are systems and methods for client side enrichment and transform via dynamic logic for analytics across various platforms for improved performance, features, and uses. Analytics data collected in client applications is transformed and enriched before being sent to the downstream pipeline using native code and logic bundled into the core application code. The additional logic specific to manipulation of analytics may be unbundled from client-side application code and still be executed on on-device to achieve the same result. The logic may be written in a single language, such as JavaScript, and run across all clients including web browser and mobile operating systems.

Claims (35)

1. A system comprising:

one or more computer processors;

one or more computer memories; and

a set of instructions incorporated into the one or more computer memories, the set of instructions configuring the one or more computer processors to perform operations, the operations comprising:

accessing a data set from a buffer on a client device, the data set representing one or more signals of the client device, the client device including a collection module, an orchestrator module, the buffer, and a tracking plan monitor, the collection module capturing one or more user actions and passing the one or more user actions to the buffer as the one or more signals of the client device;

qualifying, using the tracking plan monitor, the one or more signals as one or more events, the qualifying including passing the one or more signals through a filter logic, the filter logic being configured to qualify the one or more signals as the one or more events based on a value or relevancy of one or more data points included in the one or more signals, the filter logic having been developed outside of a client application of the client device and loaded into the client application without rebuilding the client application, the orchestrator module keeping the client device in synchronization with a developer console for a latest version of the filter logic; and

passing the one or more events through a chain of middleware built into an analytics library to enrich the one or more events, each middleware in the chain of middleware including a function runtime, the function runtime providing an operating environment in which an edge function is implemented within each middleware.

2. The system of claim 1 , wherein the filter logic is deployed to the client application over-the-air.

3. The system of claim 1 , wherein the filter logic is deployed to the client application in real time.

4. The system of claim 1 , wherein the one or more signals are passed through a plurality of filter logic, the plurality of filter logic having been developed outside of the client application of the client device and loaded into the client application without rebuilding the client application, and wherein the plurality of filter logic are written in a single language and the client application includes infrastructure that ensures the plurality of filter logic are executable independently of a platform of the client device.

5. The system of claim 1 , the operations further comprising:

fetching the filter logic upon loading of the client application.

6. The system of claim 5 , wherein the fetching of the filter logic is based on release data associated with the filter logic.

7. The system of claim 6 , wherein the release data is used to verify whether the filter logic is a latest versions.

8. A method comprising:

accessing a data set from a buffer on a client device, the data set representing one or more signals of the client device, the client device including a collection module, an orchestrator module, the buffer, and a tracking plan monitor, the collection module capturing one or more user actions and passing the one or more user actions to the buffer as the one or more signals of the client device;

qualifying, using the tracking plan monitor, the one or more signals as one or more events, the qualifying including passing the one or more signals through a filter logic, the filter logic being configured to qualify the one or more signals as the one or more events based on a value or relevancy of one or more data points included in the one or more signals, the filter logic having been developed outside of a client application of the client device and loaded into the client application without rebuilding the client application, the orchestrator module keeping the client device in synchronization with a developer console for a latest version of the filter logic; and

passing the one or more events through a chain of middleware built into an analytics library to enrich the one or more events, each middleware in the chain of middleware including a function runtime, the function runtime providing an operating environment in which an edge function is implemented within each middleware.

9. The method of claim 8 , wherein the filter logic is deployed to the client application over-the-air.

10. The method of claim 8 , wherein the filter logic is deployed to the client application in real time.

11. The method of claim 8 , wherein the one or more signals are passed through a plurality of filter logic, the plurality of filter logic having been developed outside of the client application of the client device and loaded into the client application without rebuilding the client application, and wherein the plurality of filter logic are written in a single language and the client application includes infrastructure that ensures the plurality of filter logic are executable independently of a platform of the client device.

12. The method of claim 8 , further comprising:

fetching the filter logic upon loading of the client application.

13. The method of claim 12 , wherein the fetching of the filter logic is based on release data associated with the filter logic.

14. The method of claim 13 , wherein the release data is used to verify whether the filter logic is a latest versions.

15. A non-transitory computer-readable storage medium storing a set of instructions that, when executed by one or more computer processors, causes the one or more computer processor to perform operations, the operations comprising:

accessing a data set from a buffer on a client device, the data set representing one or more signals of the client device, the client device including a collection module, an orchestrator module, the buffer, and a tracking plan monitor, the collection module capturing one or more user actions and passing the one or more user actions to the buffer as the one or more signals of the client device;

qualifying, using the tracking plan monitor, the one or more signals as one or more events, the qualifying including passing the one or more signals through a filter logic, the filter logic being configured to qualify the one or more signals as the one or more events based on a value or relevancy of one or more data points included in the one or more signals, the filter logic having been developed outside of a client application of the client device and loaded into the client application without rebuilding the client application, the orchestrator module keeping the client device in synchronization with a developer console for a latest version of the filter logic; and

passing the one or more events through a chain of middleware built into an analytics library to enrich the one or more events, each middleware in the chain of middleware including a function runtime, the function runtime providing an operating environment in which an edge function is implemented within each middleware.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the filter logic is deployed to the client application over-the-air.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the filter logic is deployed to the client application in real time.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the one or more signals are passed through a plurality of filter logic, the plurality of filter logic having been developed outside of the client application of the client device and loaded into the client application without rebuilding the client application, and wherein the plurality of filter logic are written in a single language and the client application includes infrastructure that ensures the plurality of filter logic are executable independently of a platform of the client device.

19. The non-transitory computer-readable storage medium of claim 15 , the operations further comprising:

fetching the filter logic upon loading of the client application.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the fetching of the filter logic is based on release data associated with the filter logic.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2023
From: KHAN, OSAMA; SNEED, BRANDON; HAZLETT, MARK; SRIVASTAVA, PRATEEK; SPERANDIO, CHRIS; VOLODARSKY, ILYA; XIAO, TONY; BOUNDJADJ, FATHY; RICHMOND, PETER
To: SEGMENT.IO, INC.
Reel/Frame 064298/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2023
From: SEGMENT. IO, INC.
To: TWILIO INC.
Reel/Frame 062788/0200 →
Continuity (3)
Continuation 16921690 · Jul 6, 2020
Continuation 16912668 · Jun 25, 2020
Related Publication 20220269505A1 · Aug 25, 2022
References Cited (72)
US 8997081B1 · Manion et al. · 2015 [cited by applicant]
US 9159035B1 · Ismael et al. · 2015 [cited by applicant]
US 9626277B2 · Thangamani et al. · 2017 [cited by applicant]
US 9893972B1 · Olson et al. · 2018 [cited by applicant]
US 10474563B1 · Rai et al. · 2019 [cited by applicant]
US 12067393B2 · Khan et al. · 2024 [cited by applicant]
US 20050005259A1 · Avery et al. · 2005 [cited by applicant]
US 20050125251A1 · Berger et al. · 2005 [cited by applicant]
US 20060140154A1 · Kwak · 2006 [cited by examiner]
US 20070180490A1 · Renzi et al. · 2007 [cited by applicant]
US 20090113087A1 · Kohinata · 2009 [cited by examiner]
US 20110131269A1 · Gilleland · 2011 [cited by examiner]
US 20110289524A1 · Toner · 2011 [cited by examiner]
US 20130055205A1 · Sereni et al. · 2013 [cited by applicant]
US 20130124669A1 · Anderson · 2013 [cited by examiner]
US 20130139179A1 · Roll · 2013 [cited by examiner]
US 20130227352A1 · Kumarasamy et al. · 2013 [cited by applicant]
US 20130273901A1 · Calo · 2013 [cited by examiner]
US 20150026687A1 · Yim · 2015 [cited by examiner]
US 20160182628A1 · Chen et al. · 2016 [cited by applicant]
US 20160299829A1 · Wei et al. · 2016 [cited by applicant]
US 20160321035A1 · Shi et al. · 2016 [cited by applicant]
US 20170019489A1 · Churchill · 2017 [cited by examiner]
US 20170213132A1 · Hammond et al. · 2017 [cited by applicant]
US 20170295206A1 · Feiertag et al. · 2017 [cited by applicant]
US 20180007153A1 · Fluehr · 2018 [cited by examiner]
US 20180060217A1 · Yemini et al. · 2018 [cited by applicant]
US 20180189164A1 · Kulkarni et al. · 2018 [cited by applicant]
US 20180253373A1 · Mathur · 2018 [cited by applicant]
US 20180285247A1 · Gandhi et al. · 2018 [cited by applicant]
US 20190124118A1 · Swafford · 2019 [cited by applicant]
US 20190320038A1 · Walsh · 2019 [cited by examiner]
US 20190391901A1 · Gupta et al. · 2019 [cited by applicant]
US 20200150953A1 · Smith et al. · 2020 [cited by applicant]
US 20200364588A1 · Knox · 2020 [cited by applicant]
US 20210026751A1 · Larkin et al. · 2021 [cited by applicant]
US 20210406002A1 · Khan et al. · 2021 [cited by applicant]
US 20210406150A1 · Sneed et al. · 2021 [cited by applicant]
US 20220075875A1 · Rioux · 2022 [cited by examiner]
US 20220075876A1 · Rioux et al. · 2022 [cited by applicant]
US 20220269504A1 · Khan et al. · 2022 [cited by applicant]
D. da Silva, J. Costa, B. Assunção, V. Kuprych and C. Teixeira, “Microservice-based Middleware for Collaborative Supply Chain Tracing,” 2020 15th Iberian Conference on Information Systems and Technologies (CISTI), Sevil… [cited by examiner]
U.S. Appl. No. 16/912,668, filed Jun. 25, 2020, Application Instrumentation and Event Tracking. [cited by applicant]
U.S. Appl. No. 16/921,690, filed Jul. 6, 2020, Client-Side Enrichment and Transformation Via Dynamic Logic for Analytics. [cited by applicant]
“U.S. Appl. No. 16/912,668, Non Final Office Action mailed Oct. 27, 2022”, 78 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Non Final Office Action mailed Nov. 10, 2022”, 28 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Non Final Office Action mailed Dec. 8, 2022”, 37 pgs. [cited by applicant]
“U.S. Appl. No. 16/912,668, Examiner Interview Summary mailed Feb. 9, 2023”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Examiner Interview Summary mailed Feb. 9, 2023”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Examiner Interview Summary mailed Feb. 9, 2023”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Examiner Interview Summary mailed Sep. 8, 2023”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Response filed Sep. 8, 2023 to Final Office Action mailed Jun. 8, 2023”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Response filed Sep. 22, 2023 to Final Office Action mailed Jun. 22, 2023”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Non Final Office Action mailed Sep. 27, 2023”, 39 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Non Final Office Action mailed Oct. 4, 2023”, 33 pgs. [cited by applicant]
“U.S. Appl. No. 16/912,668, Response filed Oct. 6, 2023 to Final Office Action mailed Jul. 6, 2023”, 18 pgs. [cited by applicant]
“U.S. Appl. No. 16/912,668, Non Final Office Action mailed Oct. 26, 2023”, 82 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Response filed Mar. 6, 2023 to Non Final Office Action mailed Dec. 8, 2022”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Response filed Mar. 8, 2023 to Non Final Office Action mailed Nov. 10, 2022”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 16/912,668, Response filed Mar. 27, 2023 to Non Final Office Action mailed Oct. 27, 2022”, 15 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Final Office Action mailed Jun. 8, 2023”, 38 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Final Office Action mailed Jun. 22, 2023”, 31 pgs. [cited by applicant]
“U.S. Appl. No. 16 912,668, Final Office Action mailed Jul. 6, 2023”, 80 pgs. [cited by applicant]
“U.S. Appl. No. 16/912,668, Appeal Brief filed Sep. 26, 2024”, 22 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Notice of Allowance mailed Sep. 28, 2024”, 16 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Response filed Aug. 26, 2024 to Final Office Action mailed Apr. 25, 2024”, 10 pgs. [cited by applicant]
Gehberger, Dániel, et al., “Data Driven Monitoring for Cloud Compute Systems”, IEEE ACM 9th International Conference on Utility and Cloud Computing UCC Shanghai China, (2016), 10 pgs. [cited by applicant]
Souza Ramos, T. L. Alves De, et al., “Watershed A High Performance Distributed Stream Processing System”, 23rd International Symposium on Computer Architecture and High Performance Computing Vitoria Brazil, (2011), 8 pg… [cited by applicant]
“U.S. Appl. No. 16/921,690, Notice of Allowance mailed Apr. 18, 2024”, 12 pgs. [cited by applicant]
Da Silva, Dimitri, et al., “Microservice Based Middleware for Collaborative Supply Chain Tracing”, 15th Iberian Conference on Information Systems and Technologies (CISTI), Seville, Spain, (Jun. 2020), 6 pgs. [cited by applicant]
“U.S. Appl. No. 16/921,690, Response filed Dec. 27, 2023 to Non Final Office Action mailed Sep. 27, 2023”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,751, Response filed Jan. 3, 2024 to Non Final Office Action mailed Oct. 4, 2023”, 11 pgs. [cited by applicant]