IP Library › Granted Patent US 12,210,869
Granted Patent B2
US 12,210,869 · App. 17/662,751 · Granted Jan 28, 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,210,869
App. No.
17/662,751
Granted
Jan 28, 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 (41)

1. A computer system comprising:

one or more computer processors;

one or more computer memories;

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:

receiving a sample signal from an instance of a client application deployed on a client device, the client device including an orchestrator module, a sampler, a client-side buffer, and a function runtime;

passing the sample signal to a sample buffer in a server-side developer console via the sampler in the client device, the sampler being configured to generate one or more filter functions based on content of the sample signal;

feeding the sample signal from the sample buffer to a debugger in a client-side developer console, the debugger including an interface to test custom code associated with the one or more filter functions generated by the sampler against the sample signal;

in response to testing the custom code against the sample signal, storing the tested custom code associated with the one or more filter functions in a code cache in the server-side developer console; and

fetching, using the orchestrator module in the client device, the one or more filter functions; and

executing, using the function runtime in the client device, the one or more filter functions based on a condition associated with the client-side buffer.

2. The system of claim 1 , wherein personally-identifiable information is stripped from the sample signal using a differentially private algorithm.

3. The system of claim 1 , wherein testing the custom code against the sample signal is configured to ensure that the one or more filter functions meet one or more predefined performance and/or security benchmarks, wherein the client application is kept in synchronization with the server-side developer console to ensure that a latest version of the one or more filter functions stored in the code cache is available for deployment by the orchestrator module.

4. The system of claim 1 , wherein the receiving is triggered at a fixed interval or by a request to fetch the sample signal.

5. The system of claim 4 , wherein the request to fetch the sample signal is based on a determination to identify one or more additional events from the sample signal.

6. The system of claim 1 , wherein each of the one or more filter functions is configured to run as either a source or a destination edge function.

7. The system of claim 1 , wherein the one or more filter functions are created in a separate coding environment and pushed to the server-side developer console via an application programming interface (API).

8. A method comprising:

receiving a sample signal from an instance of a client application deployed on a client device, the client device including an orchestrator module, a sampler, a client-side buffer, and a function runtime;

passing the sample signal to a sample buffer in a server-side developer console via the sampler in the client device, the sampler being configured to generate one or more filter functions based on content of the sample signal;

feeding the sample signal from the sample buffer to a debugger in a client-side developer console, the debugger including an interface to test custom code associated with the one or more filter functions generated by the sampler against the sample signal;

in response to testing the custom code against the sample signal, storing the tested custom code associated with the one or more filter functions in a code cache in the server-side developer console; and

fetching, using the orchestrator module in the client device, the one or more filter functions; and

executing, using the function runtime in the client device, the one or more filter functions based on a condition associated with the client-side buffer.

9. The method of claim 8 , wherein personally-identifiable information is stripped from the sample signal using a differentially private algorithm.

10. The method of claim 8 , wherein testing the custom code against the sample signal is configured to ensure that the one or more filter functions meet one or more predefined performance and/or security benchmarks, wherein the client application is kept in synchronization with the server-side developer console to ensure that a latest version of the one or more filter functions stored in the code cache is available for deployment by the orchestrator module.

11. The method of claim 8 , wherein the receiving is triggered at a fixed interval or by a request to fetch the sample signal.

12. The method of claim 11 , wherein the request to fetch the sample signal is based on a determination to identify one or more additional events from the sample signal.

13. The method of claim 8 , wherein each of the one or more filter functions is configured to run as either a source or a destination edge function.

14. The method of claim 8 , wherein the one or more filter functions are created in a separate coding environment and pushed to the server-side developer console via an application programming interface (API).

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 processors to perform operations, the operations comprising:

receiving a sample signal from an instance of a client application deployed on a client device, the client device including an orchestrator module, a sampler, a client-side buffer, and a function runtime;

passing the sample signal to a sample buffer in a server-side developer console via the sampler in the client device, the sampler being configured to generate one or more filter functions based on content of the sample signal;

feeding the sample signal from the sample buffer to a debugger in a client-side developer console, the debugger including an interface to test custom code associated with the one or more filter functions generated by the sampler against the sample signal;

in response to testing the custom code against the sample signal, storing the tested custom code associated with the one or more filter functions in a code cache in the server-side developer console; and

fetching, using the orchestrator module in the client device, the one or more filter functions; and

executing, using the function runtime in the client device, the one or more filter functions based on a condition associated with the client-side buffer.

16. The non-transitory computer-readable storage medium of claim 15 , wherein personally-identifiable information is stripped from the sample signal using a differentially private algorithm.

17. The non-transitory computer-readable storage medium of claim 15 , wherein testing the custom code against the sample signal is configured to ensure that the one or more filter functions meet one or more predefined performance and/or security benchmarks, wherein the client application is kept in synchronization with the server-side developer console to ensure that a latest version of the one or more filter functions stored in the code cache is available for deployment by the orchestrator module.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the receiving is triggered at a fixed interval or by a request to fetch the sample signal.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the request to fetch the sample signal is based on a determination to identify one or more additional events from the sample signal.

20. The non-transitory computer-readable storage medium of claim 15 , wherein each of the one or more filter functions is configured to run as either a source or a destination edge function.

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: SEGMENTO.IO, INC.
Reel/Frame 064298/0100 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2023
From: SEGMENT. IO, INC.
To: TWILIO INC.
Reel/Frame 062787/0840 →
Continuity (3)
Continuation 16921690 · Jul 6, 2020
Continuation 16912668 · Jun 25, 2020
Related Publication 20220269504A1 · 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 · 2019 [cited by examiner]
US 12067393B2 · Khan et al. · 2024 [cited by applicant]
US 20050005259A1 · Avery · 2005 [cited by examiner]
US 20050125251A1 · Berger · 2005 [cited by examiner]
US 20060140154A1 · Kwak et al. · 2006 [cited by applicant]
US 20070180490A1 · Renzi et al. · 2007 [cited by applicant]
US 20090113087A1 · Kohinata et al. · 2009 [cited by applicant]
US 20110131269A1 · Gilleland et al. · 2011 [cited by applicant]
US 20110289524A1 · Toner et al. · 2011 [cited by applicant]
US 20130055205A1 · Sereni et al. · 2013 [cited by applicant]
US 20130124669A1 · Anderson · 2013 [cited by examiner]
US 20130139179A1 · Roll · 2013 [cited by applicant]
US 20130227352A1 · Kumarasamy et al. · 2013 [cited by applicant]
US 20130273901A1 · Calo et al. · 2013 [cited by applicant]
US 20150026687A1 · Yim et al. · 2015 [cited by applicant]
US 20160182628A1 · Chen · 2016 [cited by examiner]
US 20160299829A1 · Wei et al. · 2016 [cited by applicant]
US 20160321035A1 · Shi et al. · 2016 [cited by applicant]
US 20170019489A1 · Churchill · 2017 [cited by applicant]
US 20170213132A1 · Hammond · 2017 [cited by examiner]
US 20170295206A1 · Feiertag et al. · 2017 [cited by applicant]
US 20180007153A1 · Fluehr · 2018 [cited by examiner]
US 20180060217A1 · Yemini · 2018 [cited by examiner]
US 20180189164A1 · Kulkarni · 2018 [cited by examiner]
US 20180253373A1 · Mathur · 2018 [cited by applicant]
US 20180285247A1 · Gandhi · 2018 [cited by examiner]
US 20190124118A1 · Swafford · 2019 [cited by examiner]
US 20190320038A1 · Walsh et al. · 2019 [cited by applicant]
US 20190391901A1 · Gupta · 2019 [cited by examiner]
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 20220269505A1 · Khan et al. · 2022 [cited by applicant]
D. Géhberger, P. Mátray and G. Németh, “Data-Driven Monitoring for Cloud Compute Systems,” 2016 IEEE/ACM 9th International Conference on Utility and Cloud Computing (UCC), Shanghai, China, 2016, pp. 128-137. (Year: 2016… [cited by examiner]
T. L. Alves de Souza Ramos, R. S. Oliveira, A. P. de Carvalho, R. A. C. Ferreira and W. Meira Jr., “Watershed: A High Performance Distributed Stream Processing System,” 2011 23rd International Symposium on Computer Arch… [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,759, Non Final Office Action mailed Nov. 14, 2022”, 29 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,759, Examiner Interview Summary mailed Feb. 9, 2023”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,759, Response filed Feb. 14, 2023 to Non Final Office Action mailed Nov. 14, 2022”, 10 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. 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. 17/662,759, Final Office Action mailed Apr. 24, 2023”, 32 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,759, Examiner Interview Summary mailed Jun. 20, 2023”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,759, Response filed Jun. 26, 2023 to Final Office Action mailed Apr. 24, 2023”, 9 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. 17/662,759, Advisory Action mailed Aug. 4, 2023”, 5 pgs. [cited by applicant]
“U.S. Appl. No. 17/662,759, Response filed Aug. 23, 2023 to Advisory Action mailed Aug. 4, 2023”, 9 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,759, Non Final Office Action mailed Sep. 14, 2023”, 33 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. 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. 17/662,759, Response filed Dec. 14, 2023 to Non Final Office Action mailed Sep. 14, 2023”, 10 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,759, Non Final Office Action mailed Jul. 18, 2024”, 24 pgs. [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, “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]
Cited By (1)
US 12,675,272