IP Library Granted Patent US 10,395,301
Granted Patent B2
US 10,395,301 · App. 15/142,541 · Granted Aug 27, 2019

Method, medium, and system for using a combination of batch-processing and on-demand processing to provide recommendations

Inventors: Jeffrey S. Magnusson (Half Moon Bay, CA); LiKuan Alex Chen (Burlingame, CA); Akshay Wadia (San Francisco, CA)
Assignee: Stitch Fix, Inc.
G06Q30/0631
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,395,301
App. No.
15/142,541
Granted
Aug 27, 2019
Kind
B2
Abstract

Systems and methods described herein, which utilize a combination of batch-processing and on-demand processing to provide recommendations, can include database(s) that store client data, item data, and executable code for composable algorithms that utilize the client data and/or the item data to provide recommendations. The system also includes a batch-process resultsP data store that stores results of composable algorithms executed using batch-processing. Additionally, the system includes an algorithm engine that accepts calls to composable algorithms and output results thereof. The algorithm engine determines which called composable algorithms are designated as being executable using batch-processing, and which are designated as being executable using on-demand processing. The algorithm engine returns results of called composable algorithms designated as being executable using on-demand processing by executing the executable code thereof, and returns results of called composable algorithms designated as being executable using batch-demand-processing by obtaining the results from the batch-process results data store.

Claims (85)

1. A recommendation system that utilizes a combination of batch-processing and on-demand processing in order to efficiently and effectively provide recommendations, the system comprising:

one or more databases that store

client data for a plurality of clients,

item data for a plurality of items that are available for recommending to the clients, and

executable code for each of a plurality of modular composable algorithms that utilize the client data and/or the item data to provide recommendations, wherein each of the plurality of composable algorithms is executable using both on-demand processing and batch-processing including either using on-demand processing or batch-processing;

a batch-process results data store that stores results of one or more of the composable algorithms that are executed using batch-processing;

an algorithm engine that

accepts calls to one or more of the composable algorithms;

determines which of the called composable algorithms is/are designated as being executable using batch-processing, and which of the called composable algorithms is/are designated as being executable using on-demand processing;

returns results of called composable algorithms designated as being executable using on-demand processing by executing the executable code of the called composable algorithms designated as being executable using on-demand processing; and

returns results of called composable algorithms designated as being executable using batch processing by obtaining the results, of the called composable algorithms designated as being executable using batch-processing, from the batch-process results data store; and

outputs the results of the called composable algorithms.

2. The system of claim 1 , wherein the algorithm engine includes an algorithm engine interface that:

accepts the calls to one or more of the composable algorithms, wherein the calls that are accepted by the algorithm engine interface do not distinguish between whether the composable algorithms being called are designated as being executable using batch-processing or designated as being executable using on-demand processing.

3. The system of claim 1 , where the algorithm engine provides the results that the algorithm engine returns to the algorithm engine interface so that the algorithm engine interface can output the results.

4. The system of claim 1 , wherein during one or more instances that the algorithm engine executes the executable code for one or more of the called composable algorithms designated as being executable using on-demand processing, the algorithm engine combines the results of the one or more composable algorithms designated as being executable using on-demand processing with the results of one or more of the called composable algorithms designated as being executable using batch-processing that are obtained from the batch-process results data store.

5. The system of claim 1 , wherein during one or more instances that the algorithm engine executes the executable code for one or more of the called composable algorithms designated as being executable using on-demand processing, the algorithm engine utilizes one or more results obtaining from the batch-process results data store as one or more inputs to at least one of the one or more of the called composable algorithms designated as being executable using on-demand processing.

6. The system of claim 1 , wherein:

the executable code, of each of the one or more of the composable algorithms that is/are designated as being executable using batch-processing, is executed by a service other than the algorithm engine and is executed in accordance with a predetermined schedule; and

the executable code, of each the one or more of the composable algorithms that is/are designated as being executable using on-demand processing, is executed by the algorithm engine in response to being called.

7. The system of claim 1 , wherein at least one of the composable algorithms, for which executable code is stored in the one or more databases, invokes a combination of two or more of the other composable algorithms and includes logic for combining or otherwise using the results of the two or more other composable algorithms that are invoked.

8. The system of claim 1 , wherein each of the composable algorithms includes corresponding metadata and a corresponding computation function, the metadata for each of the composable algorithms comprising at least a name of the composable algorithm, an author of the composable algorithm and a pointer.

9. The system of claim 8 , wherein:

the metadata for each of the composable algorithms also includes an indication of whether the composable algorithm is designated as being executable using on-demand processing, or is designated as being executable using batch-processing;

the pointer included in the metadata of a said composable algorithm that is designated as being executable using on-demand processing points to a corresponding computation function; and

the pointer included in the metadata of a said composable algorithm that is designated as being executable using batch-processing points to a corresponding result of the said composable algorithm stored as data in the batch-process results data store.

10. The system of claim 1 , further comprising:

cache memory;

wherein the algorithm engine stores, in the cache memory, the results of one or more of the composable algorithms that are executed using on-demand processing so that the said results are available, for a period of time specified by a cache interval, if at least one of the one or more of the composable algorithms for which the results are stored in the cache memory is called again during the cache interval.

11. The system of claim 1 , further comprising a graphical user interface (GUI) that displays information about one or more items that are recommended for a said client, as determined using the algorithm engine, directly to a said client or to an intermediary that is tasked with selecting items for the said client.

12. The system of claim 1 , further comprising a graphical user interface (GUI) that enables an author of a new said composable algorithm to test the new said composable algorithm and visualize the results of the new said composable algorithm.

13. The system of claim 1 , wherein:

one or more of the composable algorithms that are executed using on-demand processing utilize the results of one or more of the composable algorithms that are executed using batch-processing and stored in the results data store; and

the results of one or more of the composable algorithms that are executed using on-demand processing are used to recommend one or more of the items to one or more of the clients, or are used to recommend one or more of the items to one or more entities that is/are tasked with selecting one or more of the items for one or more of the clients.

14. The system of claim 1 , wherein:

the client data for each of the plurality of clients includes a unique client identifier (client ID) and one or more attributes associated with the client; and

the item data for each of the plurality of items includes a unique item identifier (item ID) and one or more attributes associated with the item.

15. The system of claim 14 , wherein:

the results of each of the composable algorithms, that are executed using batch-processing and stored in the results batch-process data store, comprises an array of tuples; and

each of the tuples, in a said array of tuples, comprises at least one of a said client ID or a said item ID and a corresponding score.

16. The system of claim 15 , wherein at least two or more of the composable algorithms comprise similarity algorithms each of which is used to compare the attributes of different ones of the items to one another, the attributes of different ones of the clients to one another or the attributes of one or more of the clients to the attributes of one or more of the items.

17. A method that utilizes a combination of batch-processing and on-demand processing in order to efficiently and effectively provide recommendations, the method comprising:

storing, in one or more databases, client data for a plurality of clients, item data for a plurality of items that are available for recommending to the clients, and executable code for each of a plurality of modular composable algorithms that utilize the client data and/or the item data to provide recommendations, wherein each of the plurality of composable algorithms is executable using both on-demand processing and batch-processing including either using on-demand processing or batch-processing;

storing, in a batch-process results data store, results of one or more of the composable algorithms that are executed using batch-processing;

accepting calls to one or more of the composable algorithms, wherein the calls that are accepted do not distinguish between whether the composable algorithms being called are executable using batch-processing or executable using on-demand processing; and

determining which of the called composable algorithms is/are designated as being executable using batch-processing, and which of the called composable algorithms is/are designated as being executable using on-demand processing;

returning results of called composable algorithms designated as being executable using on-demand processing by executing the executable code of the called composable algorithms designated as being executable using on-demand processing;

returning results of called composable algorithms designated as being executable using batch-processing by obtaining the results, of the called composable algorithms designated as being executable using batch-processing, from the batch-process results data store; and

outputting the results of the called composable algorithms.

18. The method of claim 17 , further comprising:

combining the results of the one or more composable algorithms designated as being executable using on-demand processing with the results of one or more of the called composable algorithms designated as being executable using batch-processing that are obtained from the batch-process results data store.

19. The method of claim 17 , further comprising:

utilizing one or more results obtaining from the batch-process results data store as one or more inputs to at least one of the one or more of the called composable algorithms designated as being executable using on-demand processing.

20. The method of claim 17 , further comprising:

executing executable code of a said composable algorithm that is designated as being executable using on-demand processing in response to the said composable algorithm being called; and

effecting execution of executable code of a further said composable algorithm that is designated as being executable using batch-processing in accordance with a batch-processing schedule associated with the further said composable algorithm.

21. The method of claim 17 , wherein the accepting calls to one or more of the composable algorithms includes accepting a call to a composable algorithm that invokes a combination of two or more of the other composable algorithms; and further comprising combining or otherwise using the results of the two or more other composable algorithms that are invoked.

22. The method of claim 17 , wherein each of the composable algorithms includes corresponding metadata and a corresponding computation function, the metadata for each of the composable algorithms comprising at least a name of the composable algorithm, an author of the composable algorithm and a pointer.

23. The method of claim 22 , wherein:

the metadata for each of the composable algorithms also includes an indication of whether the composable algorithm is designated as being executable using on-demand processing, or is designated as being executable using batch-processing;

the pointer included in the metadata of a said composable algorithm that is designated as being executable using on-demand processing points to a corresponding computation function; and

the pointer included in the metadata of a said composable algorithm that is designated as being executable using batch-processing points to a corresponding result of the said composable algorithm stored as data in the batch-process results data store.

24. The method of claim 17 , further comprising:

caching the results of one or more of the composable algorithms that are executed using on-demand processing so that the said results are available, for a period of time specified by a cache interval, if at least one of the one or more of the composable algorithms for which the results are stored in the cache memory is called again during the cache interval.

25. The method of claim 17 , further comprising displaying information about one or more items that are recommended for a said client directly to a said client or to an intermediary that is tasked with selecting items for the said client.

26. The method of claim 17 , further comprising enabling an author of a new said composable algorithm to test the new said composable algorithm and visualize the results of the new said composable algorithm.

27. The method of claim 17 , further comprising:

one or more of the composable algorithms that are executed using on-demand processing utilizing the results of one or more of the composable algorithms that are executed using batch-processing and stored in the results data store; and

recommending one or more of the items for one or more of the clients by utilizing the results of one or more of the composable algorithms that are executed using on-demand processing.

28. The method of claim 17 , wherein:

the stored client data for each of the plurality of clients includes a unique client identifier (client ID) and one or more attributes associated with the client;

the stored item data for each of the plurality of items includes a unique item identifier (item ID) and one or more attributes associated with the item;

the results of each of the composable algorithms, that are executed using batch-processing and stored in the results batch-process data store, comprises an array of tuples; and

each of the tuples, in a said array of tuples, comprises at least one of a said client ID or a said item ID and a corresponding score.

29. The method of claim 28 , wherein at least two or more of the composable algorithms comprise similarity algorithms each of which is used to compare one or more of the attributes of different ones of the items to one another, one or more of the attributes of different ones of the clients to one another, or one or more of the attributes of one or more of the clients to one or more of the attributes of one or more of the items.

30. One or more non-transitory processor readable storage devices having instructions encoded thereon which when executed cause one or more processors to perform a method for utilizing a combination of batch-processing and on-demand processing to provide recommendations, the method comprising:

accepting calls to one or more modular composable algorithms, wherein each of the one or more composable algorithms is executable using both on-demand processing and batch-processing including either using on-demand processing or batch-processing; and

identifying which of the called composable algorithms are designated as being executable using batch-processing, and which of the called composable algorithms are designated as being executable using on-demand processing;

returning results of called composable algorithms designated as being executable using on-demand processing by executing the executable code of the called composable algorithms designated as being executable using on-demand processing;

returning results of called composable algorithms designated as being executable using batch-processing by obtaining the results, of the called composable algorithms designated as being executable using batch-processing, from a batch-process results data store; and

outputting results of the called composable algorithms.

31. The one or more processor readable storage devices of claim 30 , wherein the method further comprises:

combining the results of the one or more composable algorithms designated as being executable using on-demand processing with the results of one or more of the called composable algorithms designated as being executable using batch-processing that are obtained from the batch-process results data store.

32. The one or more processor readable storage devices of claim 30 , wherein the method further comprises:

utilizing one or more results obtaining from the batch-process results data store as one or more inputs to at least one of the one or more of the called composable algorithms designated as being executable using on-demand processing.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 5, 2023
From: FIRST-CITIZENS BANK & TRUST COMPANY (SUCCESSOR BY PURCHASE TO THE FEDERAL DEPOSIT INSURANCE CORPORATION AS RECEIVER FOR SILICON VALLEY BRIDGE BANK, N.A. (AS SUCCESSOR TO SILICON VALLEY BANK)), AS ADMINISTRATIVE AGENT
To: STITCH FIX, INC.
Reel/Frame 065770/0341 →
SECURITY INTEREST Recorded Dec 4, 2023
From: STITCH FIX, INC.
To: CITIBANK N.A.
Reel/Frame 065754/0926 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 3, 2020
From: STITCH FIX, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 052831/0801 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2016
From: MAGNUSSON, JEFFREY S.; CHEN, LIKUAN ALEX; WADIA, AKSHAY
To: STITCH FIX, INC.
Reel/Frame 038561/0016 →
Continuity (1)
Related Publication 20170316485A1 · Nov 2, 2017