The present invention relates to an improved method of matching and a system thereof, wherein the matching provides personalized recommendations.
Prior art matching systems involve collecting data in static data containers and processing the collected data at predetermined intervals to update matching algorithms implemented in the prior art matching systems. The prior art matching systems do not immediately process changes as they occur in the system as these changes, which become part of the collected data, are only periodically processed such as once a day or once a week. Accordingly, a drawback of the prior art matching systems is that data, such as user actions, are not immediately captured, analyzed and reflected, to provide users with the most relevant results.
Embodiments of the present invention relate to real-time matching. As changes in data occur in a system, these changes are immediately used by running models implemented in the system to provide users with real-time personalized results. Concurrently, the system is continuously learning from these same changes to build test models, which are built upon the running models (which reflect past knowledge) using the current knowledge. The running models are continuously evolving as they are updated with the test models. A model implemented by the system is a match model, which is configured to intelligently determine which members are available for a new job and to provide a user with at least one member from that pool of available members who satisfies a search criteria specified by the user. The user's actions and the available member's actions are both immediately captured, analyzed and reflected in the system.
In one aspect, a non-transitory computer-readable medium is provided. The non-transitory computer-readable medium stores instructions that, when executed by a computing device, cause the computing device to perform a method. The method includes determining availability of each member within a services exchange medium based on user behaviors of all members continuously collected within the services exchange medium. The user behaviors include accepting a job, declining a plurality of invitations, not responding to proposals, not logging into the services exchange medium for a predetermined amount of time, and searching for work. Other user behaviors are contemplated. In some embodiments, the availability of each member is dependent of a type of job the member has accepted. For example, it can be determined that a first member who has accepted a job, such as a 40-hour programming job, is unavailable for more jobs, while it can be determined that a second member who has accepted a job, such as a 4-hour logo design job, is available for more jobs.
The method also includes providing a pool of available members. Each of the available members of the pool are selected from all members of the services exchange medium based on the learned availability.
The method also includes receiving search criteria input by a user. The search criteria is skills, location, rate, feedback and/or other suitable search criteria.
The method also includes using the search criteria as filters to present to the user at least one of the available members who satisfies the search criteria.
In some embodiments, the method further includes collecting a response from the user, wherein the response becomes part of the collection from which availability is learned.
In another aspect, a system for providing real-time personalization is provided. The system includes a first online loop. The first online loop includes a messaging buffer that contains messages. The message are received at the messaging buffer from at least one of databases, logs, processes and a user interface.
The first online loop also includes a real-time data processing engine that includes a plurality of processors for parallel processing of a message received from the messaging buffer. Each of the plurality of processors is typically configured to process a portion of the message.
The first online loop also includes a data warehouse that stores data processed by the real-time data processing engine.
The first online loop also includes a matching engine that implements a match model configured to intelligently provide a user with at least one available member. The at least one available member typically satisfies a search criteria specified by the user.
In some embodiments, the match model is also configured to learn availability based on user behaviors of all members continuously collected within a services exchange medium, provide a pool of available members, wherein each of the available members of the pool are selected from all members of the services exchange medium based on the learned availability, and select the at least one available member from the pool.
The first online loop also includes the user interface that displays results. The results includes the at least one available member. User actions associated with the user interface are typically received by the messaging buffer for further processing by the real-time data processing engine. The user interface can be in a form of a web page, an email, a popup message or a device application (e.g., mobile application, TV application).
In some embodiments, the system also includes an additional online loop, which includes the messaging buffer, the real-time data processing engine, the data warehouse, a personalized web search engine and the user interface. The personalized web search engine typically implements a search model that is configured to intelligently return web search results that are based on the user's behavior within the services exchange medium. The results typically includes the web search results.
In some embodiments, the system also includes a trends/my stats engine that is configured to personalize the user interface, a real-time data visualization and alerts engine that is configured to provide information regarding data flow through the system, and/or a notifications/payments engine that is configured to provide the user with information regarding changes to the system.
In some embodiments, the system also includes HDFS/Hive that stores the same data processed by the real-time data processing engine that is also in the data warehouse. The data in the HDFS/Hive is referred to as training data. The system also includes an experiment engine including one or more test models. The experiment engine can track performance of any of the one or more test models and provides performance data of that test model. The one or more test models are refined prior to being implemented by one or more engines of the system. For example, in some embodiments, the match model was processed by the batch data processing engine prior to the match engine implementing the match model. The system also includes a batch data processing engine that processes the one or more test models using the training data.
The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments of the present invention.
In the following description, numerous details are set forth for purposes of explanation. However, one of ordinary skill in the art will realize that the invention can be practiced without the use of these specific details. Thus, the present invention is not intended to be limited to the embodiments shown but is to be accorded the widest scope consistent with the principles and features described herein.
Embodiments of the present invention relate to real-time matching. As changes in data occur in a system, these changes are immediately used by running models implemented in the system to provide users with real-time personalized results. Concurrently, the system is continuously learning from these same changes to build test models, which are built upon the running models (which reflect past knowledge) using the current knowledge. The running models are continuously evolving as they are updated with the test models. A model implemented by the system is a match model, which is configured to intelligently determine which members are available for a new job and to provide a user with at least one member from that pool of available members who satisfies a search criteria specified by the user. The user's actions and the available member's actions are both immediately captured, analyzed and reflected in the system.
In some embodiments, the match model is implemented by a matching engine of the system.
The personalization concept and the recommendations concept address matching issues in a services exchange medium. The services exchange medium is for hiring and working on demand. In the services exchange medium, clients are able to find and hire freelancers to get projects done quickly and cost effectively. Specifically, freelancers profiles are maintained in the services exchange medium and can be obtained and reviewed by clients prior to hiring. Similarly, in the services exchange medium, freelancers are able to search for projects posted by clients to work on. Freelancers can be invited by clients to bid on the projects posted by clients. Based on the logic of the match model, the matching engine is configured to assist in recommending appropriate jobs and/or clients to freelancers. Similarly, based on the logic of the match model, the matching engine is configured to assist in recommending proposals and/or qualified freelancers to clients. It should be noted that the terms work, jobs and projects are used interchangeably herein. Typically, all clients and all freelancers are members of the services exchange medium.
The matching engine 100 is typically implemented on a computing device, such as a server.
In general, a hardware structure suitable for implementing the computing device 200 includes a network interface 202, a memory 204, processor(s) 206, I/O device(s) 208, a bus 210 and a storage device 212. The choice of processor 206 is not critical as long as a suitable processor with sufficient speed is chosen. In some embodiments, the computing device 200 includes a plurality of processors 206. The memory 204 is able to be any conventional computer memory known in the art. The storage device 212 is able to include a hard drive, CDROM, CDRW, DVD, DVDRW, flash memory card, RAM, ROM, EPROM, EEPROM or any other storage device. The computing device 200 is able to include one or more network interfaces 202. An example of a network interface includes a network card connected to an Ethernet or other type of LAN. The I/O device(s) 208 are able to include one or more of the following: keyboard, mouse, monitor, display, printer, modem, touchscreen, button interface and other devices. Application(s) 214, such as a program(s) implementing the match model, are likely to be stored in the storage device 212 and memory 204 and are processed by the processor 206. More or less components shown in
At a step 310, the matching engine 100 provides a pool of available members. In particular, those members who have been determined as being available for new or additional work become part of the pool. And, those members who have been determined as being unavailable for new or additional work do not become part of the pool. Each of the available members of the pool is selected from all members of the services exchange medium based on the determination made at the previous step 305.
At a step 315, the matching engine 100 receives a search criteria input from a user. For example, the user is a client who is searching for qualified freelancers. The client is typically able to input one or more search criteria such as skills, location, rate, and feedback during a search. Other search criteria are possible.
At a step 320, the matching engine 100 uses the search criteria as filters to present to the user at least one of the available members who satisfies the search criteria. In some embodiments, all available members who satisfy the user's search criteria are provided to the user. Alternatively, only the top M available members who best satisfy the user's search criteria are provided to the user. In some embodiments, these recommended members are sorted based on a rank score.
For example, assume only freelancers Ann, May, James, Riki and Thomas are part of the pool as they have been determined to be available for new or additional work at the steps 305 and 310. All other freelancers within the services exchange medium have been determined to be unavailable for new or additional work. Further assume client Wendy is searching to hire a service provider who knows web programming and lives in Sacramento. Freelancer Ann will be returned to the user since Ann best satisfies Wendy's search criteria. May, James, Riki and Thomas are not recommended not because they were not in the pool but because they do not meet the search criteria.
At the end of the step 320, the method 300 ends.
Typically, responses, such as user actions in the user interface 414, from the user, the at least one member presented to the user, or both are collected. The responses become part of the collection from which availability is learned. The system is thus able to reflect changes, including the responses, immediately in the match model, typically within seconds, to provide users with personalized recommendations.
In contrast, prior art matching engines are not intelligent and is not able to differentiate between those members who are available and those members who are unavailable for new or additional work. As such, the prior art matching engines blindly includes everyone in the pool. A user's search criteria is then applied to everyone in the pool. It is therefore possible for the prior art matching engines to recommend a freelancer who is unavailable for new or additional work to a user. Continuing with the example, prior art matching engines could recommend both freelancers Greg and Ann because both meet the user's search criteria, even though Greg is currently unavailable to accept new or additional work.
Although the matching engine 410 has been discussed as recommending freelancers, the matching engine 410 can also provide other personalized recommendations, including clients, jobs and proposals.
The system 400 can support front-end services for end users of the system 400. The front-end services include a first online loop. The first online loop is configured to provide real-time matches discussed in
The messaging buffer 404, such as a FIFO buffer or any suitable queue, contains messages. The messages are changes that occur in the system 400. The changes can be received from the plurality of sources 402, such as database(s), log(s) and process(es). Other sources are contemplated. The changes can also be received from the user interface 414.
Each message in the messaging buffer 404 is received at and processed by the real-time data processing engine 406. The real-time data processing engine 406 includes a plurality of processors for parallel processing a message received from the messaging buffer 404. Each of the plurality of processors is configured to process a particular portion of the message such that the entire message is processed by the real-time data processing engine 406. Each of the plurality of processors is responsible for performing a set of analysis on its assigned portion of the message to analyze. The real-time data processing engine 406 preferably is able to process volumes of activity or changes in real-time and scale.
Data processed by the real-time data processing engine 406 is stored at (e.g., written into) the data warehouse 408. The matching engine 410, which implements the match model described above, receives a search criteria specified by the user and, using the data from the data warehouse 408, to recommend/provide at least one available member who satisfies the search criteria. In particular, the match model includes logic configured to determine availability of each member based on user behaviors of all members continuously collected with the services exchange medium, to provide a pool of available members based on the determination, and to use the search criteria as filters to present or recommend the at least one available member from the pool. The recommended member is not only qualified to do or perform the work but is available to take on the work.
The user interface 414 displays results, such as the at least one available member recommended by the matching engine 410. The user interface 414 can be in the form of a web page, an email or a popup message. Other forms of the user interface 414, such as device applications including a mobile application and a TV application, are contemplated. Typically, user actions associated with the user interface 414 are received by the messaging buffer 404 for further immediate processing by the real-time data processing engine 406. Any actions associated with the user interface 414 are reflected in the data warehouse 408 to be used by the messaging engine 410. For example, new user registration, new job posts, and changes to data are considered in real-time. If Ann, from the above hypothetical, changes location, then matches will not show Ann for that search location, Sacramento.
In some embodiments, the front-end services also include a second online loop. The second online loop is configured to provide personalized web searches. The second online loop includes the messaging buffer 404, the real-time data processing engine 406, the data warehouse 408, the personalized web search engine 412 and the user interface 414. The same data in the data warehouse 408 used by the matching engine 410 is also used by the personalized web search engine 412. The personalized web search engine 412 implements a search model. The search model includes logic that is configured to intelligently return web search results that are based on the user's behavior within the services exchange medium. The web search results are displayed at the user interface 414. The personalized web search engine 412 is typically able to log users in and out and maintain sessions.
In some embodiments, the front-end services also include the trends/my stats engine 416 that is configured to personalize the user interface 414 by presenting to the user personalized data, including the user's trends and statistics (e.g., quality of the user) in the services exchange medium. The personalized data is typically derived from the data stored in the data warehouse 408. The trends/my state engine 416 is an extension of the system 400.
In some embodiments, the front-end services also include the notifications/payments engine 418 that is configured to provide the user with information regarding changes to the system 400 and payments. The notifications/payments engine 418 is also an extension of the system 400.
The system 400 can also support back-end services for administrators of the system 400. In some embodiments, the back-end services include the real-time data visualization and alerts engine 426 that is configured to provide to administrators information regarding data flow through the system 400.
In some embodiments, the back-end services also include the HDFS/Hive 420, the batch data processing engine 422 and the experiment engine 424. The HDFS/Hive 420 stores the same data processed by the real-time data processing engine 406 that is also stored in the data warehouse 408. In some embodiments, data from the real-time data processing engine 406 is concurrently rewritten to both the HDFS/Hive 420 and the data warehouse 408. The data in the HDFS/Hive 420 is referred to as training data.
The experiment engine 424 includes one or more test models in development. The training data in the HDFS/Hive 420 is typically processed by the batch data processing engine 422 using the one or more test models stored in the experiment engine 424 to create current knowledge. The test models are typically built upon running models (e.g., match model and search model) and the current knowledge. In some embodiments, two or more test models can be simultaneously processed. Developers are able to further refine the test models in the batch data processing engine 422 before the test models are implemented in the different engines of the system 400. For example, in some embodiments, the match model was processed (e.g., tested) by the batch data processing engine 422 prior to the match engine 410 implementing the match model. For another example, in some embodiments, the search model was processed (e.g., tested) by the batch data processing engine 422 prior to the personalized web search engine 412 implementing the search model. Refinement of each test model is an iterative process.
In some embodiments, the experiment engine 424 is also configured to track performance of any test model in the system 400. The system 400 is configured to provide performance data of the test model being tracked. Developers are able to evaluate the performance data to optimize that test model by adjusting parameters of that test model in the experiment engine 424. In some embodiments, the performance data is typically available within hours of testing.
One of ordinary skill in the art will realize other uses and advantages also exist. While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. Thus, one of ordinary skill in the art will understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.
The application claims priority of U.S. provisional application, Ser. No. 61/799,247, filed Mar. 15, 2013, and entitled “Instamatch Engine,” by the same inventors. This application incorporates U.S. provisional application, Ser. No. 61/799,247, in its entirety by reference.
Number | Name | Date | Kind |
---|---|---|---|
6092049 | Chislenko | Jul 2000 | A |
6208659 | Govindarajan et al. | Mar 2001 | B1 |
6385620 | Kurzius | May 2002 | B1 |
6591011 | Nielsen | Jul 2003 | B1 |
6618734 | Williams | Sep 2003 | B1 |
6662194 | Joao | Dec 2003 | B1 |
6735570 | Lacy et al. | May 2004 | B1 |
6859523 | Jilk | Feb 2005 | B1 |
6871181 | Kansal | Mar 2005 | B2 |
6931385 | Halstead et al. | Aug 2005 | B1 |
7096193 | Beaudoin | Aug 2006 | B1 |
7466810 | Quon | Dec 2008 | B1 |
7505919 | Richardson | Mar 2009 | B2 |
7752080 | Greener | Jul 2010 | B1 |
7814085 | Pfleger | Oct 2010 | B1 |
8024670 | Rahmatian | Sep 2011 | B1 |
8156051 | Shah | Apr 2012 | B1 |
8224755 | Goodman et al. | Jul 2012 | B2 |
8380709 | Diller | Feb 2013 | B1 |
8504403 | Deich | Aug 2013 | B2 |
8512143 | Jung et al. | Aug 2013 | B2 |
8517742 | Johnson | Aug 2013 | B1 |
8682683 | Ananian | Mar 2014 | B2 |
8843388 | Westfall | Sep 2014 | B1 |
8856670 | Thakur | Oct 2014 | B1 |
9454576 | Kapoor | Sep 2016 | B1 |
20010034630 | Mayer | Oct 2001 | A1 |
20010034688 | Annunziata | Oct 2001 | A1 |
20010039508 | Nagler | Nov 2001 | A1 |
20010041988 | Lin | Nov 2001 | A1 |
20020010685 | Ashby | Jan 2002 | A1 |
20020052773 | Kraemer | May 2002 | A1 |
20020054138 | Hennum | May 2002 | A1 |
20020103687 | Kipling | Aug 2002 | A1 |
20020120554 | Vega | Aug 2002 | A1 |
20020161707 | Cole et al. | Oct 2002 | A1 |
20030004738 | Chander | Jan 2003 | A1 |
20030014294 | Yoneyama | Jan 2003 | A1 |
20030050811 | Freeman, Jr. | Mar 2003 | A1 |
20030086608 | Frost | May 2003 | A1 |
20030097305 | Ogino et al. | May 2003 | A1 |
20030191684 | Lumsden | Oct 2003 | A1 |
20030212246 | Eleveld | Nov 2003 | A1 |
20030212627 | Burns et al. | Nov 2003 | A1 |
20030220843 | Lam | Nov 2003 | A1 |
20040064436 | Breslin et al. | Apr 2004 | A1 |
20040103167 | Grooters | May 2004 | A1 |
20040128224 | Dabney et al. | Jul 2004 | A1 |
20040215560 | Amalraj et al. | Oct 2004 | A1 |
20040230511 | Kannan et al. | Nov 2004 | A1 |
20040243428 | Black | Dec 2004 | A1 |
20050033633 | LaPasta | Feb 2005 | A1 |
20050043998 | Bross | Feb 2005 | A1 |
20050222907 | Pupo | Oct 2005 | A1 |
20060031177 | Rule | Feb 2006 | A1 |
20060080116 | Maguire | Apr 2006 | A1 |
20060143228 | Odio-Paez | Jun 2006 | A1 |
20060159109 | Lamkin | Jul 2006 | A1 |
20060173724 | Trefler | Aug 2006 | A1 |
20060195428 | Peckover | Aug 2006 | A1 |
20060212359 | Hudgeon | Sep 2006 | A1 |
20060284838 | Tsatalos | Dec 2006 | A1 |
20070022040 | Gordon | Jan 2007 | A1 |
20070061144 | Grichnik | Mar 2007 | A1 |
20070112671 | Rowan | May 2007 | A1 |
20070130059 | Lee et al. | Jun 2007 | A1 |
20070174180 | Shin | Jul 2007 | A1 |
20070192130 | Sandhu | Aug 2007 | A1 |
20070233510 | Howes | Oct 2007 | A1 |
20080059267 | Hamilton | Mar 2008 | A1 |
20080059523 | Schmidt | Mar 2008 | A1 |
20080134292 | Ariel et al. | Jun 2008 | A1 |
20080154783 | Rule | Jun 2008 | A1 |
20080194228 | Pousti | Aug 2008 | A1 |
20080288582 | Pousti | Nov 2008 | A1 |
20080313005 | Nessland | Dec 2008 | A1 |
20090011395 | Schmidt | Jan 2009 | A1 |
20090055404 | Heiden | Feb 2009 | A1 |
20090055476 | Marcus et al. | Feb 2009 | A1 |
20090132345 | Meyssami et al. | May 2009 | A1 |
20090150386 | Lichtblau | Jun 2009 | A1 |
20090210282 | Elenbaas et al. | Aug 2009 | A1 |
20090241035 | Tseng et al. | Sep 2009 | A1 |
20090265243 | Karrassner | Oct 2009 | A1 |
20090288021 | Ioffe | Nov 2009 | A1 |
20100017253 | Butler | Jan 2010 | A1 |
20100144318 | Cable | Jun 2010 | A1 |
20100161503 | Foster | Jun 2010 | A1 |
20100162167 | Stallings | Jun 2010 | A1 |
20100287525 | Wagner | Nov 2010 | A1 |
20110106762 | Dane | May 2011 | A1 |
20110208665 | Hirsch | Aug 2011 | A1 |
20110302053 | Rigole | Dec 2011 | A1 |
20120143952 | Von Graf | Jun 2012 | A1 |
20120150761 | Ananian | Jun 2012 | A1 |
20120265770 | Desjardins | Oct 2012 | A1 |
20120290365 | Bramlett, Jr. | Nov 2012 | A1 |
20130325734 | Bixler | Dec 2013 | A1 |
20140164271 | Forman | Jun 2014 | A1 |
20140377723 | Strong | Dec 2014 | A1 |
Entry |
---|
Mang, Online Search and Matching Quality, 2012, Leibinz Institute for Economic Research at the University of Munich, 147, 1-18. (Year: 2012). |
Paolucci et al., “Semantic Matching of Web Services Capabilities”, 2002, Carnegie Mellon University, Pittsburgh, PA, USA. |
D'Aurizio, Patricia. “Human Resource Solutions Onboarding: Delivering the Promise”. Nursing Economics 25.4 (2007):228, year 2007. |
Graybill, Jolie O., et al., “Employee Onboarding: Identification of Best Practices in ACRL Libraries”, Library Management 34.3, (2013), 200-218. (Year: 2013). |
IBM Websphere Telecommunications Web Services Server Programming Guide, ibm.com/redbooks, John Bergland et al., Sep. 2008. |
Muhl, Charles J. “What Is an Employee—The Answer Depends on the Federal Law.” Monthly Lab. Rev. 125(2002): 9 pages. |
Barton, Lisa Horwedel “Reconciling the independent contractor versus employee dilemma: a discussion of current developments as they relate to employee benefit plans.” Cap. UL Rev 29 (2001): 63 pages. |
Moran, Jenna Amato “Independent Contractor or Employee-Misclassification of Workers and Its Effect of the State.” Buff. Pub. Int. LJ 28 (2009): 28 pages. |
Webb, Teresa J., et al. “An empirical assist in resolving the classification dilemma of workers as either employees or independent contractors.” Journal of Applied Business Research (JABR) 24. (2011): 22 pages. |
Wood, Robert W. “Defining Employees and Independent Contractors.” Bus. L. Today 17 (2007): 6 pages. |
Number | Date | Country | |
---|---|---|---|
61799247 | Mar 2013 | US |